常用的方法、知识(三)
来源:互联网 发布:淘宝我的下单截图 编辑:程序博客网 时间:2024/05/17 21:01
1、Fragment中写onTouchevent,监听Fragment的触碰事件,主要用于滚屏监听隐藏显示某个控件:
首先在Fragment的父Activity中写一个回调接口:
public interface MyTouchListener { public void onTouchEvent(MotionEvent event); } // 保存MyTouchListener接口的列表 private ArrayList<MyTouchListener> myTouchListeners = new ArrayList<MainActivity.MyTouchListener>(); /** * 提供给Fragment通过getActivity()方法来注册自己的触摸事件的方法 * @param listener */ public void registerMyTouchListener(MyTouchListener listener) { myTouchListeners.add(listener); } /** * 提供给Fragment通过getActivity()方法来取消注册自己的触摸事件的方法 * @param listener */ public void unRegisterMyTouchListener(MyTouchListener listener) { myTouchListeners.remove( listener ); } /** * 分发触摸事件给所有注册了MyTouchListener的接口 */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { for (MyTouchListener listener : myTouchListeners) { listener.onTouchEvent(ev); } return super.dispatchTouchEvent(ev); }
然后在Fragment中,其中在触碰事件中,判断是上滑动还是下滑动,从而做一个悬浮按钮的显示、隐藏:
//Fragment的OnTouchevent,滚动隐藏显示备忘录图标 MainActivity.MyTouchListener myTouchListener = new MainActivity.MyTouchListener() { @Override public void onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { y1 = event.getY(); } if (event.getAction() == MotionEvent.ACTION_UP) { y2 = event.getY(); if (y1 - y2 > 50) { //向上滑动 if (fabReportMemo.getVisibility() == View.VISIBLE) { fabReportMemo.setVisibility(View.GONE); fabReportMemo.setAnimation(BaseMethod.HideAnimation(getContext())); } } else if (y2 - y1 > 50) { //向下滑动 if (fabReportMemo.getVisibility() == View.GONE) { fabReportMemo.setVisibility(View.VISIBLE); fabReportMemo.setAnimation(BaseMethod.ShowAnimation(getContext())); } } } // 处理手势事件 } }; // 将myTouchListener注册到分发列表 ((MainActivity) this.getActivity()).registerMyTouchListener(myTouchListener);
2、双击标题栏,布局滚动到顶部:
int count = 0; long firClick,secClick; //双击标题栏回到顶部 llReportTitle.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEvent.ACTION_DOWN == event.getAction()) { count++; if (count == 1) { firClick = System.currentTimeMillis(); } else if (count == 2) { secClick = System.currentTimeMillis(); if (secClick - firClick < 1000) { svReport.smoothScrollTo(0, 0); if (fabReportMemo.getVisibility() == View.GONE) { fabReportMemo.setVisibility(View.VISIBLE); fabReportMemo.setAnimation(BaseMethod.ShowAnimation(getContext())); } } count = 0; firClick = 0; secClick = 0; } } return true; } });
3、双击退出程序(新写法):
private long exitTime = 0; public void doExitApp() { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(this, R.string.press_again_exit_app, Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); } } @Override public void onBackPressed() { doExitApp(); }
0 0
- 常用的方法、知识(三)
- 常用的数据库知识(三)
- 常用的方法、知识(一)
- 常用的方法、知识(二)
- Servlet(三)常用的基本方法
- mysql知识积累(三)常用
- 面向对象(三):常用知识下
- JavaScript常用知识及其实例(三)
- 常用知识表示方法
- 破解入门(三)-----脱壳的常用方法
- 破解入门(三)-----脱壳的常用方法
- 自定义View(三)的常用方法(测量、绘制、位置)
- 深入浅出Tensorflow(三):训练神经网络模型的常用方法
- 深入浅出Tensorflow(三):训练神经网络模型的常用方法
- 深入浅出Tensorflow(三):训练神经网络模型的常用方法
- 三种常用的字符串判空串方法
- 三种常用的字符串判空串方法
- StringUtils工具类的常用方法(三)
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 抽象类与接口
- 通过反编译深入理解Java String及intern
- C++11新特性学习笔记
- Managing Your App's Memory —— Android官方文档翻译<一>
- 常用的方法、知识(三)
- ios 让程序在后台长久运行的方法
- 一个菜鸟后台开始的前端入门(1)
- 财付通 第三方支付 即时到帐支付接口
- Jquery根据浏览器窗口改变调整大小
- 用户界面框架jQuery EasyUI发布v1.4.5|附下载
- 制作一个可以滑动操作的 Table View Cell
- 关于迭代器失效的讨论
- eclipse使用----如何在Eclipse中查看JDK类库的源代码