安卓长按后的释放响应(长按模仿iphone6s的3DTouch)
来源:互联网 发布:淘宝客推广教学 编辑:程序博客网 时间:2024/05/05 08:43
安卓长按后的释放响应(长按模仿iphone6s的3DTouch)
我个人觉得iphone的新技术–3dtouch有点多余,我也体验过真机,觉得用长按来取代足够了,看发布会的时候王自如说安卓的长按做不到长按后的释放响应,当时看到我就笑了。。。。。
今天上课无聊,就没事写了个模拟的小程序
一开始想着直接重写onTouchEvent方法判断一下ACTION_UP即可,可是发现并不能,的确是不能响应到ACTION_UP操作,因为父布局将事件拦截了,所以需要重写ViewGroup的onInterceptTouchEvent,为了简单点就直接继承自FrameLayout来做
import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.widget.FrameLayout;/** * Created by dctrx on 2015/10/10. */public class ThreeDTouchLayout extends FrameLayout{ private static final String TAG = "ThreeDTouchLayout"; private OnActionUpListener onActionUpListener; public void setOnActionUpListener(OnActionUpListener onActionUpListener) { this.onActionUpListener = onActionUpListener; } public interface OnActionUpListener { void onActionUp(); } public ThreeDTouchLayout(Context context) { super(context); } public ThreeDTouchLayout(Context context, AttributeSet attrs) { super(context, attrs); } public ThreeDTouchLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_UP) { Log.d(TAG, "onInterceptTouchEvent->MotionEvent.ACTION_UP"); if (onActionUpListener != null) { onActionUpListener.onActionUp(); return true; } } return super.onInterceptTouchEvent(ev); }}
在activity里实现一下接口回掉即可
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import turbo.com.ios3dtouch.ui.ThreeDTouchDialog;import turbo.com.ios3dtouch.ui.ThreeDTouchLayout;public class MainActivity extends Activity { private static final String TAG = "MainActivity"; ThreeDTouchLayout layout; ImageView ivImage; ThreeDTouchDialog threeDTouchDialog; boolean hasShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); layout = (ThreeDTouchLayout) findViewById(R.id.three_d_layout); layout.setOnActionUpListener(new ThreeDTouchLayout.OnActionUpListener() { @Override public void onActionUp() { if (hasShow) { hasShow = false; threeDTouchDialog.dismiss(); } } }); ivImage = (ImageView) findViewById(R.id.iv_image); ivImage.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { hasShow=true; threeDTouchDialog = new ThreeDTouchDialog(MainActivity.this); threeDTouchDialog.show(); return true; } }); }}
下面是运行效果:
源码地址(AndroidStudio):
http://download.csdn.net/detail/dct8888/9170611
0 0
- 安卓长按后的释放响应(长按模仿iphone6s的3DTouch)
- 3DTouch的分享
- 3DTouch的使用
- 模仿系统自带的集拍照,录制视频,以及iphone6S以下的手机拍摄livephoto照片(livephoto),滑动可切换
- ppc中长时间点击的响应(长按)
- ppc中长时间点击的响应(长按)
- Android:长按连续响应的Button
- Android:长按连续响应的Button
- iphone响应地图长按事件 解决长按响应两次的问题
- iPhone6s和iPhone6sPlus的适配
- 长按手势响应弹出UIActionSheet碰到的问题
- ListView响应长按事件的相关注意事项
- 定义响应的手势类:长按手势,缩放手势
- [绍棠] 关于iOS9 出的3DTouch 功能Demo
- iOS 3DTouch 在现实当中的应用
- 在对UITableView添加长按事件的时候,有的列表不响应长按
- 3DTouch
- 3DTouch
- 敏捷测试与传统测试的区别
- SGU 347 Join the Strings 字符串 排序 思维
- 树莓派设置无线热点(RTL8188CUS芯片)
- Ray Sphere 相交测试
- hadoop之MAPREDUCE
- 安卓长按后的释放响应(长按模仿iphone6s的3DTouch)
- 黑马程序员——OC基础---协议
- Android-ImageSpan的使用实现图文并排
- 定位
- javascript列表
- 百度贴吧自动图片下载爬虫
- 【---重要---】 iOS:界面适配
- C++primer学习:关联容器(3)
- Python base64模块