導航:首頁 > 操作系統 > android左右滑動監聽

android左右滑動監聽

發布時間:2022-07-05 15:48:19

A. android recyclerview判斷左右滑動

RecycleView設置滑動監聽:
mRecycleView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});

判斷滑動方向:
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {//下滑動作
}
if (dy < 0) {//上滑動作
}
super.onScrolled(recyclerView, dx, dy);
}
判斷是否滑動到頂部、底部:
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
if(newState == RecyclerView.SCROLL_STATE_IDLE){//停止滑動
if(recyclerView.canScrollVertically(1)){
Toast.show("滑動到頂部");
}
if(recyclerView.canScrollVertically(-1)){
Toast.show("滑動到底部");
}
}
super.onScrollStateChanged(recyclerView, newState);
}

recyclerView.canScrollVertically(1); false表示不能往上滑動,即代表到頂部了;
recyclerView.canScrollVertically(-1); false表示不能往下滑動,即代表到底部了;

B. android開發中,如何實現左右滑動顯示上一條下一條數據

將界面1中的數據共享給界面2 , 在界面2中監聽onTouch事件 , 判斷是否是左滑動和右滑動, 刷新數據

C. android怎麼實現頁面的左右滑動

Android上有一個控制項叫做ViewPager,該控制項可以根據item的多少實現左右滑動的效果。
Android上還有一個東西叫做Fragment,這是一個依賴於Activity而又獨立的頁面。
綜合這兩個控制項的特性,可以使用ViewPager+Fragment的方式,即在ViewPager里嵌入Fragment的方式,實現頁面左右滑動的效果。

D. android fragment怎麼監聽上下滑動

在Android應用中,經常需要手勢滑動操作,比如上下滑動,或左右方向滑動,處理手勢滑動 。通常有兩種方法:一種是單獨實現setOnTouchListener監聽器來,另一種是構建手勢探測器

第一種方法,就是在要實現滑動的View中,實現OnTouchListener監聽事件,然後判斷KeyDonw和KeyUp 直接的位置距離來判斷滑動方向,核心實現代碼如下:

/**
* 設置上下滑動作監聽器
* @author jczmdeveloper
*/
private void setGestureListener(){
myView.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:
mPosX = event.getX();
mPosY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
mCurPosX = event.getX();
mCurPosY = event.getY();

break;
case MotionEvent.ACTION_UP:
if (mCurPosY - mPosY > 0
&& (Math.abs(mCurPosY - mPosY) > 25)) {
//向下滑動

} else if (mCurPosY - mPosY < 0
&& (Math.abs(mCurPosY - mPosY) > 25)) {
//向上滑動
collapse();
}

break;
}
return true;
}

});
}

第二種方法:就是構建手勢探測器,如GestureDetector mygesture = new GestureDetector(this);,然後在onFling方法中根據MotionEvent的兩個參數的 按下和滑動以及放開的位置和距離來判斷滑動方向以及滑動速度等的。要構建GestureDetector,必須要和OnTouchListener一起使用,因為必須設置Touch監聽,核心實現實例如下:

import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

public class TagScrollView extends FrameLayout implements OnTouchListener, OnGestureListener{
private float mPosX, mPosY, mCurPosX, mCurPosY;
private static final int FLING_MIN_DISTANCE = 20;// 移動最小距離
private static final int FLING_MIN_VELOCITY = 200;// 移動最大速度
//構建手勢探測器
GestureDetector mygesture = new GestureDetector(this);

public TagScrollView(Context context) {
this(context, null);
}

public TagScrollView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public TagScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);

//setGestureListener();
//設置Touch監聽
this.setOnTouchListener(this);
//允許長按
this.setLongClickable(true);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return mygesture.onTouchEvent(event);
}

@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
// e1:第1個ACTION_DOWN MotionEvent
// e2:最後一個ACTION_MOVE MotionEvent
// velocityX:X軸上的移動速度(像素/秒)
// velocityY:Y軸上的移動速度(像素/秒)

// X軸的坐標位移大於FLING_MIN_DISTANCE,且移動速度大於FLING_MIN_VELOCITY個像素/秒
//向
if (e1.getY() - e2.getY() > FLING_MIN_DISTANCE){
// && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
collapse();
}
//向上
if (e2.getY() - e1.getY() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {

}
return false;
}

}


E. 如何在Android中實現左右滑動的指引效果

可以使用一個RadioGroup做為指引,設置viewpager的頁面切換監聽,當切換界面時設置RadioGroup中的第position個radionbutton選中

布局文件如下
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.demo.MainActivity" >

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>

<RadioGroup
android:id="@+id/indicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal" >

</RadioGroup>

</RelativeLayout>

代碼如下
public class MainActivity extends Activity {

private ViewPager pager;
private RadioGroup indicator;
private List<View> views;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) findViewById(R.id.pager);
indicator = (RadioGroup)findViewById(R.id.indicator);

views = new ArrayList<View>();
for(int i=0; i<3; i++){
TextView tv = new TextView(this);
tv.setTextSize(40);
tv.setText("hello,world");
views.add(tv);

//動態添加指引
RadioButton radio = new RadioButton(this);
radio.setId(i);
indicator.addView(radio);
}

//默認選中第一頁

indicator.check(0);
pager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
//頁面切換時,選擇radiobutton
indicator.check(arg0);
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}

@Override
public void onPageScrollStateChanged(int arg0) {
}
});

pager.setAdapter(new PagerAdapter() {

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}

@Override
public int getCount() {
return views.size();
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position));
return views.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView(views.get(position));
}
});
}
}

F. 怎樣用自動化測左右滑動的imageview

<P> </P><P><STRONG>然後是具體的布局文件及代碼實現:</STRONG></P><P>main.xml:</P> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF" android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="40dip" android:background="@drawable/title_bk" > <ImageButton android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_back_selector" android:src="@drawable/btn_back" /> <View android:id="@+id/line0" android:layout_width="1px" android:layout_height="fill_parent" android:layout_toRightOf="@id/btn_back" android:background="#aa11264f" /> <View android:layout_width="1px" android:layout_height="fill_parent" android:layout_toRightOf="@id/line0" android:background="#009ad6" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="優酷客戶端" android:textColor="#FFFFFF" android:textSize="20sp" /> </RelativeLayout> <FrameLayout android:layout_width="fill_parent" android:layout_height="140dip" > <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="35dip" android:layout_gravity="bottom" android:background="#33000000" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="中國家庭院校園區域名字體現" android:textColor="#ffffff" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="3dip" android:gravity="center" > <View android:id="@+id/v_dot0" style="@style/dot_style" android:background="@drawable/dot_focused" /> <View android:id="@+id/v_dot1" style="@style/dot_style" /> <View android:id="@+id/v_dot2" style="@style/dot_style" /> <View android:id="@+id/v_dot3" style="@style/dot_style" /> <View android:id="@+id/v_dot4" style="@style/dot_style" /> </LinearLayout> </LinearLayout> </FrameLayout> </LinearLayout>

MyViewPagerActivity:

package com.tony.viewpager; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheledExecutorService; import java.util.concurrent.TimeUnit; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.TextView; /** * 仿優酷Android客戶端圖片左右滑動 * */ public class MyViewPagerActivity extends Activity { private ViewPager viewPager; // android-support-v4中的滑動組件 private List<ImageView> imageViews; // 滑動的圖片集合 private String[] titles; // 圖片標題 private int[] imageResId; // 圖片ID private List<View> dots; // 圖片標題正文的那些點 private TextView tv_title; private int currentItem = 0; // 當前圖片的索引號 // An ExecutorService that can schele commands to run after a given delay, // or to execute periodically. private ScheledExecutorService scheledExecutorService; // 切換當前顯示的圖片 private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { viewPager.setCurrentItem(currentItem);// 切換當前顯示的圖片 }; }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageResId = new int[] { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e }; titles = new String[imageResId.length]; titles[0] = "鞏俐不低俗,我就不能低俗"; titles[1] = "撲樹又回來啦!再唱經典老歌引萬人大合唱"; titles[2] = "揭秘北京電影如何升級"; titles[3] = "樂視網TV版大派送"; titles[4] = "熱血屌絲的反殺"; imageViews = new ArrayList<ImageView>(); // 初始化圖片資源 for (int i = 0; i < imageResId.length; i++) { ImageView imageView = new ImageView(this); imageView.setImageResource(imageResId[i]); imageView.setScaleType(ScaleType.CENTER_CROP); imageViews.add(imageView); } dots = new ArrayList<View>(); dots.add(findViewById(R.id.v_dot0)); dots.add(findViewById(R.id.v_dot1)); dots.add(findViewById(R.id.v_dot2)); dots.add(findViewById(R.id.v_dot3)); dots.add(findViewById(R.id.v_dot4)); tv_title = (TextView) findViewById(R.id.tv_title); tv_title.setText(titles[0]);// viewPager = (ViewPager) findViewById(R.id.vp); viewPager.setAdapter(new MyAdapter());// 設置填充ViewPager頁面的適配器 // 設置一個監聽器,當ViewPager中的頁面改變時調用 viewPager.setOnPageChangeListener(new MyPageChangeListener()); } @Override protected void onStart() { scheledExecutorService = Executors.(); // 當Activity顯示出來後,每兩秒鍾切換一次圖片顯示 scheledExecutorService.scheleAtFixedRate(new ScrollTask(), 1, 2, TimeUnit.SECONDS); super.onStart(); } @Override protected void onStop() { // 當Activity不可見的時候停止切換 scheledExecutorService.shutdown(); super.onStop(); } /** * 換行切換任務 * * @author Administrator * */ private class ScrollTask implements Runnable { public void run() { synchronized (viewPager) { System.out.println("currentItem: " + currentItem); currentItem = (currentItem + 1) % imageViews.size(); handler.obtainMessage().sendToTarget(); // 通過Handler切換圖片 } } } /** * 當ViewPager中頁面的狀態發生改變時調用 * * @author Administrator * */ private class MyPageChangeListener implements OnPageChangeListener { private int oldPosition = 0; /** * This method will be invoked when a new page becomes selected. * position: Position index of the new selected page. */ public void onPageSelected(int position) { currentItem = position; tv_title.setText(titles[position]); dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal); dots.get(position).setBackgroundResource(R.drawable.dot_focused); oldPosition = position; } public void onPageScrollStateChanged(int arg0) { } public void onPageScrolled(int arg0, float arg1, int arg2) { } } /** * 填充ViewPager頁面的適配器 * * @author Administrator * */ private class MyAdapter extends PagerAdapter { @Override public int getCount() { return imageResId.length; } @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(imageViews.get(arg1)); return imageViews.get(arg1); } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } @Override public void finishUpdate(View arg0) { } } }

G. 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
解鎖,查看效果 。本例中圖片大小未調整,稍微欠缺一點美觀效果,請讀者體諒。希望大家支持,並共同學習。

H. android GridView 點擊 進入圖片左右滑動 求個方法

全屏瀏覽可以用ImageView的setImageResource,全屏的屬性在manifest的activity上設置,
左右滑動使用Gallery拖動效果,創建一個int數組存放圖片的id,繼承Adapyer重寫getView方法,網上有代碼的,我的代碼都被加密了,公司電腦

I. android 處理手指左右滑動,實現在一個ImageView上左右滑動手指,改變圖片的透明度

唉,專門為你把這個搞出來了。還有一個demo,要的話留郵箱。

思路是寫一個AlphaImage類繼承ImageView,實現onTouchEvent方法,把事件傳遞給GestureDetector處理,並設置一個OnGestureListener監聽。這樣,在有事件的時候,
GestureDetector會分析處理,如果構成Fling(滑動)事件,會回調OnGestureListener
中的onFling方法,我們只需要判斷是左滑還是右滑,然後重設ImageView的Alpha值,並
且保證Alpha值不會超過1,也不會低於0就好。

閱讀全文

與android左右滑動監聽相關的資料

熱點內容
韓國19禁 瀏覽:180
有部電影叫什麼長生 瀏覽:458
磁碟加密的過程中能使用嗎 瀏覽:352
用樂高拼一個小小的解壓球 瀏覽:22
顯示伺服器讀取超時怎麼辦 瀏覽:501
殘芯twrp解壓密碼 瀏覽:162
數控車智能編程 瀏覽:979
php正則表達式匹配任意字元 瀏覽:320
在文件夾什麼word文檔 瀏覽:991
刺激愛情片 瀏覽:644
電影迷途少女微笑片段 瀏覽:722
現在還有什麼網站能看 瀏覽:161
韓國電影在哪個視頻看 瀏覽:808
android觀察者模式使用 瀏覽:567
伺服器03系統和08有什麼區別 瀏覽:723
程序員都是如何自學的 瀏覽:938
迅雷影院類似的網站 瀏覽:492
韓國電影吻戲電影推薦5個小時合集 瀏覽:82
有一部小說女主角叫蘇 瀏覽:299
一女主多男主的小說在線閱讀 瀏覽:810