當前位置:首頁 » 安卓系統 » android點擊滑動

android點擊滑動

發布時間: 2022-10-11 05:35:14

❶ android 自定義view滑動和點擊事件沖突怎麼解決

在Android中,對一個View同時調用OnTouch事件和OnClick事件時,導致事件沖突,比如onClick事件打算執行A動作,OnTouch事件打算執行B動作,但是在實際使用時會發現,當調用OnTouch時,有可能會同時執行A,B兩個動作,這是因為OnClick事件本身就是在OnTouch事件中發生的;在onTouch事件中,如果返回true,就不會執行onClick,返回false,就同時執行onClick方法,要想把OnTouch和onClick事件完全的區分。可能過下列方法,解決該沖突問題:
就是在 OnTouch中的MotionEvent.ACTION_DOWN 時,記錄下點(X1,Y1),
在 MotionEvent.ACTION_UP 時,記錄下點(X2,Y2),然後比對 倆點之間的距離,如果小於一個較小數值(比如5),就認為是Click事件,onTouch中返回false,如果距離較大,可以當作onTouch事件去處理,返回true:
示範如下:
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
x1 = event.getX();
y1 = event.getY();
}
if (event.getAction() == MotionEvent.ACTION_UP) {
x2 = event.getX();
y2 = event.getY();
if (Math.abs(x1 - x2) < 6) {
return false;// 距離較小,當作click事件來處理
}
if(Math.abs(x1 - x2) >60){ // 真正的onTouch事件
}
}
return true;// 返回true,不執行click事件
}

❷ 怎麼樣有滑動效果 android

android的滑動效果是通過View容器類ViewFlipper來實現的。

ViewFilpper是Android官方提供的一個View容器類,繼承於ViewAnimator類,用於實現頁面切換,也可以設定時間間隔,讓它自動播放。
又ViewAnimator繼承至於FrameLayout的,所以ViewFilpper的Layout裡面可以放置多個View,繼承關系如下:

1、activity的寫法如下:

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.GestureDetector;

importandroid.view.MotionEvent;

importandroid.view.ViewGroup.LayoutParams;

importandroid.view.animation.Animation;

importandroid.view.animation.AnimationUtils;

importandroid.widget.ImageView;

importandroid.widget.ViewFlipper;

.view.GestureDetector.OnGestureListener{

privateint[]imgs={R.drawable.img1,R.drawable.img2,

R.drawable.img3,R.drawable.img4,R.drawable.img5};

=null;

privateViewFlipperviewFlipper=null;

privateActivitymActivity=null;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mActivity=this;

viewFlipper=(ViewFlipper)findViewById(R.id.viewflipper);

gestureDetector=newGestureDetector(this);//聲明檢測手勢事件

for(inti=0;i<imgs.length;i++){//添加圖片源

ImageViewiv=newImageView(this);

iv.setImageResource(imgs[i]);

iv.setScaleType(ImageView.ScaleType.FIT_XY);

viewFlipper.addView(iv,newLayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

}

viewFlipper.setAutoStart(true);//設置自動播放功能(點擊事件,前自動播放)

viewFlipper.setFlipInterval(3000);

if(viewFlipper.isAutoStart()&&!viewFlipper.isFlipping()){

viewFlipper.startFlipping();

}

}

@Override

publicbooleanonTouchEvent(MotionEventevent){

viewFlipper.stopFlipping();//點擊事件後,停止自動播放

viewFlipper.setAutoStart(false);

returngestureDetector.onTouchEvent(event);//注冊手勢事件

}

@Override

publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){

if(e2.getX()-e1.getX()>120){//從左向右滑動(左進右出)

AnimationrInAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_right_in);//向右滑動左側進入的漸變效果(alpha0.1->1.0)

AnimationrOutAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_right_out);//向右滑動右側滑出的漸變效果(alpha1.0->0.1)

viewFlipper.setInAnimation(rInAnim);

viewFlipper.setOutAnimation(rOutAnim);

viewFlipper.showPrevious();

returntrue;

}elseif(e2.getX()-e1.getX()<-120){//從右向左滑動(右進左出)

AnimationlInAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_left_in);//向左滑動左側進入的漸變效果(alpha0.1->1.0)

AnimationlOutAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_left_out);//向左滑動右側滑出的漸變效果(alpha1.0->0.1)

viewFlipper.setInAnimation(lInAnim);

viewFlipper.setOutAnimation(lOutAnim);

viewFlipper.showNext();

returntrue;

}

returntrue;

}

@Override

publicbooleanonDown(MotionEvente){

returnfalse;

}

@Override

publicvoidonLongPress(MotionEvente){

}

@Override

publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){

returnfalse;

}

@Override

publicvoidonShowPress(MotionEvente){

}

@Override

publicbooleanonSingleTapUp(MotionEvente){

returnfalse;

}

}

2、main.xml配置文件:

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<ViewFlipper

android:id="@+id/viewflipper"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

</LinearLayout>

以上完成了手勢滑屏:

手勢滑動屏幕動畫,是通過android.view.GestureDetector類檢測各種手勢事件實現的,該類有兩個回調介面(Interface)

A、GestureDetector.OnDoubleTapListener,用來通知DoubleTap雙擊事件,類似於滑鼠的雙擊事件,介面三個抽象回調函數如下

1、onDoubleTap(MotionEvent e):DoubleTap雙擊手勢事件後通知(觸發)

2、onDoubleTapEvent(MotionEvent e):DoubleTap雙擊手勢事件之間通知(觸發),包含down、up和move事件(這里指的是在雙擊之間發生的事件,例如在同一個地方雙擊會產生DoubleTap手勢,而在DoubleTap手勢裡面還會發生down和up事件,這兩個事件由該函數通知)

3、onSingleTapConfirmed(MotionEvent e):用來判定該次點擊是SingleTap而不是DoubleTap,如果連續點擊兩次就是DoubleTap手勢;那麼如果只點擊一次,系統等待一段時間後沒有收到第二次點擊則判定該次點擊為SingleTap而不是DoubleTap,此時觸發的就是SingleTapConfirmed事件

❸ android 手勢操作中滑動和滾動的區別

滑動一般是左右,滾動是上下,而且滑動操作范圍有限,滾動范圍比較大

❹ Android的listview的點擊和滑動效果沖突了

ViewDragHelper.Callback做滑動效果,你是不是在這里屏蔽了onTouch

如果這里重寫了onTouch 你要在onTouch里返回false這樣,事件才能繼續傳遞

還有,你想實現listView item的動畫,或者滑動刪除,左右滑動操作的話,建議你直接用開源框架

我這里給你上傳一份,關於listView的各種動畫,各種控制項,你可以直接用這些源代碼了

❺ Android怎樣實現左右滑動

建立工程
1
打開android開發平台

2
建立新的工程,點擊file. ->new->project.選擇Android Application Project,點擊Next.

3
填寫工程名,選擇創建的android版本。圖例工程名為zuoyouhuadong 版本為android2.2.填好之後點擊next

4
下面進入前景色和背景色等的設置,若不屬性可直接點擊next

5
繼續點擊next

6
可以編輯Activity Name名字,避免所有的工程都一個名字,運行的時候不知道都是哪一個工程。點擊finish.工程創建完畢。

END
添加圖片到工程
1
網上下載或者本地選取圖片四張。(圖片名字最好改為英文)

2
適當縮小 工程軟體窗口,點擊圖片aa,拖放到zuoyouhuadong->res->drawable-hapi上,會提示你是否將圖片復制進工程。

3
選擇是OK

4
可以看到工程中已經有你的圖片了。

5
按照本段2--4步驟把其他三張圖片添加進工程。 添加圖片的准備工作完畢。

END
代碼實現左右滑動
1
目標轉向主編輯框,視圖界面轉到代碼界面。

2
代碼實現左右滑動功能。主要用HorizontalScrollView 。主要代碼如下:<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none"
android:id="@+id/ScrollView"

>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/aa"
android:layout_weight="1"
android:scaleType="fitXY" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bb"
android:scaleType="fitXY"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/cc"
android:scaleType="fitXY"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/dd"
android:scaleType="fitXY"/>
</LinearLayout>
</HorizontalScrollView>全
部代碼截圖如下。

3
部分主要代碼解析:
android:scrollbars="none" 設置是否有滑動條;
android:scaleType="fitXY" 設置圖片自適應;
android:src="@drawable/aa" 設置載入的圖片;
android:layout_width="wrap_content"設置寬屬性;
android:layout_height="wrap_content"設置長屬性。
END
運行查看效果
右鍵工程,點擊run,等待虛擬器啟動運行程序

2
解鎖,查看效果 。本例中圖片大小未調整,稍微欠缺一點美觀效果,請讀者體諒。希望大家支持,並共同學習。

❻ android點擊按鈕可以實現滑動功能嗎

可以的:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:ration="400" />
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:ration="400" />
</set>
這就是一個從左邊移出屏幕的文件,translate就是位移的屬性,從100%P屏幕的最右端,平移到屏幕最左端,屏幕左邊的坐標為0

❼ Android 點擊空白或滑動時候關閉軟鍵盤(有scrollview的坑)

1、一般來說直接傳parent_resid就可以了。但是!!!
2、scrollview不能onclick監聽,但是要監聽他的點擊和滑動就得用ontouch監聽
3、如果parent下有個差不多佔據整個屏幕的scrollview請傳scrollview_resid比較好,因為parent_resid被遮擋了,監聽不到。。。

❽ android點擊跳到左右滑動 頁面時 可以隨意指定先顯示第幾個頁面嗎

可以的,左右滑動的控制項就是viewPager,viewPager可以設置當前界面的。

具體設置代碼:

  1. viewPager.setCurrentItem(2); 表示轉跳第三頁,注意viewPager是從0開始的。

  2. viewPager.setOffscreenPageLimit(4); 表示四個界面來回切換不會重新創建。

  3. viewPager.getCurrentItem();表示獲取當前是第幾頁。

❾ android 點擊滑動開關彈出spinner怎麼寫界面謝謝

這個容易,用framlayout將你的列表布局寫好至於最上層,設置visiable=「gone或者invisiable」
給組件寫一個動畫讓他滑下來就行了,用開關來控制滑動事件。

熱點內容
冒險島按鍵精靈腳本下載 發布:2025-01-23 19:46:50 瀏覽:751
安卓訪問共享需要開通什麼服務 發布:2025-01-23 19:43:01 瀏覽:518
vs2015c語言調試 發布:2025-01-23 19:42:47 瀏覽:142
山西認證伺服器連接不上雲伺服器 發布:2025-01-23 19:38:26 瀏覽:442
linux中斷驅動 發布:2025-01-23 19:34:07 瀏覽:757
金佰鑫密碼鎖的設置鍵在哪裡 發布:2025-01-23 19:34:07 瀏覽:933
出資料庫 發布:2025-01-23 19:33:27 瀏覽:273
壓縮天然氣運輸車價格 發布:2025-01-23 19:31:46 瀏覽:938
c語言if函數用法 發布:2025-01-23 19:17:28 瀏覽:626
java多線程練習題 發布:2025-01-23 19:01:27 瀏覽:102