觉得博文有用,请点赞,请评论,请关注,谢谢!~
老规矩,先上GIF动态图,看个效果,如果符合你的项目或者确定你要了解的内容,再往下看吧:
scrollBy((int)distanceX, (int)distanceY); // 这里为了演示,可以上下左右滑动
scrollBy((int)distanceX, getScrollY()); // Y轴保持在创建时的起始值,我们一般这么用
MainActivity.java:
package com.iwanghang.mygesturedetector; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private MyViewPager myViewPager; private int[] ids = {R.drawable.a,R.drawable.b,R.drawable.c, R.drawable.d,R.drawable.e,R.drawable.f}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getSupportActionBar().hide(); myViewPager = (MyViewPager) findViewById(R.id.myViewPager); // 添加页面 for (int i = 0; i <ids.length ; i++) { ImageView iv = new ImageView(this); iv.setBackgroundResource(ids[i]); //iv.setImageResource(ids[i]); myViewPager.addView(iv); } } }MyViewPager.java:
package com.iwanghang.mygesturedetector; import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; /** * 仿ViewPager */ public class MyViewPager extends ViewGroup{ /** * 手势识别 * 1、定义出来 * 2、实例化 -> 把想要的方法给重写 * 3、在OnTouchEvent()把时间传递给手势识别器 */ private GestureDetector detector; // 1、定义出来 public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); initView(context); // 2、实例化 } private void initView(final Context context) { // 2、实例化 detector = new GestureDetector(context,new GestureDetector.SimpleOnGestureListener(){ @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { scrollBy((int)distanceX, (int)distanceY); // 这里为了演示,可以上下左右滑动 //scrollBy((int)distanceX, getScrollY()); // Y轴保持在创建时的起始值,我们一般这么用 //Toast.makeText(context, ""+e1+"|"+e2+"|"+distanceX+"|"+distanceY, Toast.LENGTH_SHORT).show(); return true; } }); } @Override protected void onLayout(boolean b, int i, int i1, int i2, int i3) { // 遍历孩子,给每个孩子指定在屏幕的坐标位置 for (int n = 0; n <getChildCount() ; n++) { View childView = getChildAt(n); childView.layout(n*getWidth(),0,(n+1)*getWidth(),getHeight()); } } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); // 把时间传递给手势识别器 detector.onTouchEvent(event); return true; } }activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.iwanghang.mygesturedetector.MainActivity"> <com.iwanghang.mygesturedetector.MyViewPager android:id="@+id/myViewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </com.iwanghang.mygesturedetector.MyViewPager> </RelativeLayout>
转载请注明出处: http://blog.csdn.net/iwanghang/
欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
觉得博文有用,请点赞,请评论,请关注,谢谢!~