安卓开发中的手势操作监听1双击2.滑动关闭Activity 3.放大缩小图片等手势操作,

来源:互联网 发布:中国陶瓷出口数据 编辑:程序博客网 时间:2024/06/11 16:07

安卓开发中加入一些手势操作会给用户使用可以带来更多方便,

所以有的界面加入手势操作,会是很不错的做法哦


我就提供以下我自己做的手势监听,都是在官方的API基础上加以处理

有双击手势,右滑关闭Activity,放大缩小图片,等主要操作

直接提供以下代码吧 大家参考一下吧


/** * hbm * 提供以下的手势监听,当然其他方法也可以实现 * 手势监听特色包括1.双击 2.手势滑动(启动距离->到结束距离) 3.放大缩小 */public class MainActivity extends AppCompatActivity {    //提示    private TextView mTvHint;    //双击显示图片    private ImageView mIvGood, mIvLama;    //双击, 滑动关闭 手势监听    private GestureDetector mDetector;    //缩放因数    private float mFactor;    //放大图片手势    private ScaleGestureDetector mScale;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        setListener();    }    private void setListener() {        //手势监听        mDetector = new GestureDetector(this, new GestureListener(mTvHint, mIvGood, this));        //放大图片手势        mScale = new ScaleGestureDetector(this, new ScaleListener());    }    @Override    public boolean onTouchEvent(MotionEvent event) {        return mDetector.onTouchEvent(event) || mScale.onTouchEvent(event);    }    private void initView() {        mTvHint = (TextView) findViewById(R.id.tvHint);        mIvGood = (ImageView) findViewById(R.id.ivGood);        mIvLama = (ImageView) findViewById(R.id.ivLama);    }    //手势监听    class GestureListener extends GestureDetector.SimpleOnGestureListener {        //提示        private TextView mTvHint;        //双击显示图片        private ImageView mIvGood;        private Context mContext;        public GestureListener(TextView tvHint, ImageView ivGood, Context context) {            this.mTvHint = tvHint;            this.mIvGood = ivGood;            this.mContext = context;        }        @Override        public boolean onDoubleTap(MotionEvent e) {            Log.i("main", "手势的双击事件");            mIvGood.setVisibility(View.VISIBLE);            mIvGood.setImageResource(R.drawable.apk3);            mTvHint.setText("双击监听");            new Handler().postDelayed(new Runnable() {                @Override                public void run() {                    mIvGood.setVisibility(View.GONE);                }            }, 500);            return super.onDoubleTap(e);        }        @Override        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {            Log.i("main", "e1=" + e1.getX() + "e2=" + e2.getY() + "velocityX速度=" + velocityX + "velocityY=" + velocityY);            //触摸起点坐标 结束坐标            if (e1.getX() < (e2.getX() - 200) || velocityX > 1000) {                Toast.makeText(mContext, "这个滑动事件是关闭页面手势", Toast.LENGTH_LONG).show();                ((MainActivity) mContext).finish();            }            return false;        }        @Override        public void onLongPress(MotionEvent e) {            Log.i("main", "手势的按下未松开、未移动的事件");            mTvHint.setText("手势的按下未松开、未移动的事件");            super.onLongPress(e);        }        @Override        public boolean onDown(MotionEvent e) {            Log.i("main", "手势的按下事件");            return super.onDown(e);        }        @Override        public boolean onSingleTapUp(MotionEvent e) {            Log.i("main", "手势的单击事件");            return super.onSingleTapUp(e);        }        @Override        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {            Log.i("main", "手势的滚动事件");            return super.onScroll(e1, e2, distanceX, distanceY);        }    }    //图片放大手势监听    class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {        @Override        public boolean onScale(ScaleGestureDetector detector) {            mFactor *= detector.getScaleFactor();            //0.2-4            mFactor = Math.min(4, Math.max(mFactor, 0.3f));            ViewPropertyAnimator animate = mIvLama.animate();            animate.scaleX(mFactor)                    .scaleY(mFactor)                    .setDuration(300)                    .start();            return super.onScale(detector);        }    }}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩智力轻度低下该怎么办 发侮辱人的信息怎么办 宋民国表情我能怎么办 苹果手机微信弄成听筒模式怎么办 我的小可爱丢了怎么办 法斗犬老是皮肤病看也看不好怎么办 项链水晶不亮了怎么办 美甲画画手抖怎么办 微信中的表情符号不全怎么办 球球大作战找不到团战服务器怎么办 小孩的腰有点弯怎么办 小朋友不听话被老师罚站怎么办 幼儿园小朋友被老师罚站怎么办 生完小孩弯腰驼背怎么办 小孩爱捡垃圾是怎么办 腰扭了不敢弯腰怎么办 小人狗在背后骂我怎么办 微信表情缺失了怎么办 动图过大 微信 怎么办 我能怎么办图片带字 我该怎么办图片带字 学化妆找不到模特练妆怎么办? cf进房间闪退怎么办 手游cf账号封了怎么办 大门牙缺了一块怎么办 缺了一颗牙齿怎么办 CF购买医疗包竞猜币没到账怎么办 CF手游昵称不合法怎么办 微信gif尺寸过大怎么办 微信表情上限300怎么办 太受欢迎了怎么办快穿 兔宝宝沾上人气味怎么办 我该怎么办的文字图片 爱奇艺缓存视频显示下载失败怎么办 把老公惹生气了怎么办 苹果x用电量太快怎么办 小中考地生没过怎么办 如果遇到不负责的语文老师怎么办 孩子的语文老师教的不好怎么办 刚买的小猫很凶怎么办 2月幼犬不吃东西怎么办