实现右滑关闭Activity的简单方法
来源:互联网 发布:全身美白 知乎 编辑:程序博客网 时间:2024/06/06 02:59
1、在styles文件中,给主题添加<item name="android:windowIsTranslucent">true</item>
2、项目中添加 SwipeBackLayout.java 和 SwipeBackActivity.java 文件(文件如下),并使Activity继承SwipeBackActivity即可实现简单的右滑删除效果
SwipeBackLayout.java文件SwipeBackActivity.java文件public class SwipeBackActivity extends AppCompatActivity { private SwipeBackLayout mSwipeBackLayout; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getWindow().getDecorView().setBackgroundDrawable(null); } @Override public void setContentView(@LayoutRes int layoutResID) { mSwipeBackLayout = new SwipeBackLayout(this); View childView = View.inflate(this, layoutResID, null); mSwipeBackLayout.addView(childView); super.setContentView(mSwipeBackLayout); } @Override public void setContentView(View view) { mSwipeBackLayout = new SwipeBackLayout(this); mSwipeBackLayout.addView(view); super.setContentView(mSwipeBackLayout); }}public class SwipeBackLayout extends RelativeLayout { private ViewDragHelper helper; private float mScrollPercent; private float mScrollThreshold = 0.5f; private static final int OVER_SCROLL_DISTANCE = 10; public SwipeBackLayout(Context context) { super(context); init(); } public SwipeBackLayout(Context context, AttributeSet attrs) { super(context, attrs); init(); } public SwipeBackLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { helper = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback() { @Override public boolean tryCaptureView(View child, int pointerId) { boolean ret = helper.isEdgeTouched(ViewDragHelper.EDGE_LEFT, pointerId); return ret; } @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { super.onViewPositionChanged(changedView, left, top, dx, dy); mScrollPercent = Math.abs((float) left / getWidth()); invalidate(); if (mScrollPercent >= 1) { Activity act = (Activity) getContext(); if (!act.isFinishing()) { act.finish(); act.overridePendingTransition(0, 0); } } } @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { int left = xvel > 0 || xvel == 0 && mScrollPercent > mScrollThreshold ? getWidth() + OVER_SCROLL_DISTANCE : 0; helper.settleCapturedViewAt(left, 0); invalidate(); } @Override public int getViewHorizontalDragRange(View child) { return 1; } @Override public int clampViewPositionHorizontal(View child, int left, int dx) { return Math.max(0, left); } }); helper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_LEFT); } @Override public void computeScroll() { if (helper.continueSettling(true)) { ViewCompat.postInvalidateOnAnimation(this); } } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { boolean ret = helper.shouldInterceptTouchEvent(ev); return ret; } @Override public boolean onTouchEvent(MotionEvent event) { helper.processTouchEvent(event); return true; }}
0 0
- 实现右滑关闭Activity的简单方法
- 右滑关闭Activity,SwipeBackLayout的使用
- android 右滑关闭activity
- ViewDragHelper实现右划关闭Activity
- 【Android】Activity右滑返回的实现
- 【Android】Activity右滑返回的实现
- Android右滑关闭当前Activity
- 关闭多个activity最简单的方法
- android 实现Activity的右滑返回效果
- android开发步步为营之72:右滑关闭Activity
- Android仿IOS 仿微信 右滑关闭Activity(附源码)
- Activity右滑返回效果实现
- 实现app全局activity右滑退出
- Android 右滑实现退出Activity
- 一个简单的侧滑关闭Activity的示例
- mui 右滑关闭页面的功能
- 仿Iphone右划关闭Activity
- Android 一键打造仿IOS右滑退出Activity,非常简单的集成方式(SwipeFinishLayout)
- 谷歌深度学习公开课学习笔记(1)
- 如何在无显示器的Ubuntu下跑前端测试
- share_ptr 的 知识梳理
- 使用Session防止表单重复提交
- 剑指Offer前十题
- 实现右滑关闭Activity的简单方法
- jquery中的ajax处理跨域问题-之-----jsonp
- 高并发Java 七 并发设计模式
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'BaseResultMap'
- Hadoop伪分布式环境搭建
- Android自定义控件实现九宫格解锁
- Sphinx参考手册(五)
- 详解iOS和Android在测试上的不同