导航:首页 > 操作系统 > 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左右滑动监听相关的资料

热点内容
四缸压缩机结构图 浏览:244
卡通版解压顶 浏览:895
文件夹拉链不透明 浏览:920
建个自己的服务器地址 浏览:203
pythonfilerw 浏览:409
python怎么断点调试 浏览:519
软件和编程开发 浏览:826
苹果电脑压缩文件夹 浏览:826
压缩机不转导致熄火 浏览:720
抖音订单加密打不了单子 浏览:634
python量化书籍 浏览:601
cadicl命令怎么用 浏览:527
坚果云linux 浏览:564
app认设备怎么解 浏览:547
怎么在设置上设置加密密码 浏览:406
特朗普命令军警开枪 浏览:149
学python还是go 浏览:224
安卓的游戏数据如何转入苹果 浏览:271
app里的支付账户如何修改 浏览:56
linux当前句柄数 浏览:513