日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android實現左滑退出Activity的完美封裝

瀏覽:111日期:2022-09-21 13:30:45

1:定義一個自己的父級容器,讓它繼承自一個布局(LinearLayout、RelativeLayout都可以)

public class SildingFinishLayout extends RelativeLayout implements View.OnTouchListener { /** * SildingFinishLayout布局的父布局 */ private ViewGroup mParentView; /** * 處理滑動邏輯的View */ private View touchView; /** * 滑動的最小距離 */ private int mTouchSlop; /** * 按下點的X坐標 */ private int downX; /** * 按下點的Y坐標 */ private int downY; /** * 臨時存儲X坐標 */ private int tempX; /** * 滑動類 */ private Scroller mScroller; /** * SildingFinishLayout的寬度 */ private int viewWidth; /** * 記錄是否正在滑動 */ private boolean isSilding; private OnSildingFinishListener onSildingFinishListener; private boolean isFinish; public SildingFinishLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SildingFinishLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); mScroller = new Scroller(context); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); if (changed) {// 獲取SildingFinishLayout所在布局的父布局 mParentView = (ViewGroup) this.getParent(); viewWidth = this.getWidth(); } } /** * 設置OnSildingFinishListener, 在onSildingFinish()方法中finish Activity * * @param onSildingFinishListener */ public void setOnSildingFinishListener( OnSildingFinishListener onSildingFinishListener) { this.onSildingFinishListener = onSildingFinishListener; } /** * 設置Touch的View * * @param touchView */ public void setTouchView(View touchView) { this.touchView = touchView; touchView.setOnTouchListener(this); } public View getTouchView() { return touchView; } /** * 滾動出界面 */ private void scrollRight() { final int delta = (viewWidth + mParentView.getScrollX());// 調用startScroll方法來設置一些滾動的參數,我們在computeScroll()方法中調用scrollTo來滾動item mScroller.startScroll(mParentView.getScrollX(), 0, -delta + 1, 0,Math.abs(delta)); postInvalidate(); } /** * 滾動到起始位置 */ private void scrollOrigin() { int delta = mParentView.getScrollX(); mScroller.startScroll(mParentView.getScrollX(), 0, -delta, 0,Math.abs(delta)); postInvalidate(); } /** * touch的View是否是AbsListView, 例如ListView, GridView等其子類 * * @return */ private boolean isTouchOnAbsListView() { return touchView instanceof AbsListView ? true : false; } /** * touch的view是否是ScrollView或者其子類 * * @return */ private boolean isTouchOnScrollView() { return touchView instanceof ScrollView ? true : false; } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN:downX = tempX = (int) event.getRawX();downY = (int) event.getRawY();break; case MotionEvent.ACTION_MOVE:int moveX = (int) event.getRawX();int deltaX = tempX - moveX;tempX = moveX;if (Math.abs(moveX - downX) > mTouchSlop && Math.abs((int) event.getRawY() - downY) < mTouchSlop) { isSilding = true;// 若touchView是AbsListView,// 則當手指滑動,取消item的點擊事件,不然我們滑動也伴隨著item點擊事件的發生 if (isTouchOnAbsListView()) { MotionEvent cancelEvent = MotionEvent.obtain(event); cancelEvent.setAction(MotionEvent.ACTION_CANCEL | (event.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT)); v.onTouchEvent(cancelEvent); }}if (moveX - downX >= 0 && isSilding) { mParentView.scrollBy(deltaX, 0);// 屏蔽在滑動過程中ListView ScrollView等自己的滑動事件 if (isTouchOnScrollView() || isTouchOnAbsListView()) { return true; }}break; case MotionEvent.ACTION_UP:isSilding = false;if (mParentView.getScrollX() <= -viewWidth / 2) { isFinish = true; scrollRight();} else { scrollOrigin(); isFinish = false;}break; }// 假如touch的view是AbsListView或者ScrollView 我們處理完上面自己的邏輯之后// 再交給AbsListView, ScrollView自己處理其自己的邏輯 if (isTouchOnScrollView() || isTouchOnAbsListView()) { return v.onTouchEvent(event); }// 其他的情況直接返回true return true; } @Override public void computeScroll() {// 調用startScroll的時候scroller.computeScrollOffset()返回true, if (mScroller.computeScrollOffset()) { mParentView.scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); postInvalidate(); if (mScroller.isFinished()) {if (onSildingFinishListener != null && isFinish) { onSildingFinishListener.onSildingFinish();} } } } public interface OnSildingFinishListener { public void onSildingFinish(); }}

2.Acitity

在Activity的onCreate()方法里面

@Override public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); SildingFinishLayout mSildingFinishLayout = (SildingFinishLayout) findViewById(R.id.timed_task_SildingFinishLayout);mSildingFinishLayout mSildingFinishLayout .setOnSildingFinishListener(new SildingFinishLayout.OnSildingFinishListener() { @Override public void onSildingFinish() {finish(); } }); mSildingFinishLayout .setTouchView(mSildingFinishLayout);//綁定底層的布局就可以了 :不起作用的話換個你activity 布局里面view就可以啦 }

截止目前,這個功能已經實現了

解決問題:這個會出現左滑 背景白色問題

1.style.xml中中增加

<style name='AppTheme' parent='android:Theme.Light'> <item name='android:windowIsTranslucent'>true</item> <item name='android:windowNoTitle'>true</item> <item name='android:windowBackground'>@android:color/transparent</item></style>

2 acvitiy 的屬性中加上

android:theme='@style/AppTheme'

3 一些屬性的詳解

<item name='android:windowFrame'>@null</item> :Dialog的windowFrame框為無<item name='android:windowIsFloating'>true</item>:是否浮現在activity之上<item name='android:windowIsTranslucent'>false</item>:是否半透明<item name='android:windowNoTitle'>true</item>:是否顯示title<item name='android:windowBackground'>@drawable/dia_bg</item>:設置dialog的背景<item name='android:backgroundDimEnabled'>false</item>: 背景是否透明顯示

到此這篇關于Android實現左滑退出Activity的完美封裝的文章就介紹到這了,更多相關Android 左滑退出Activity內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲经典在线| 丁香六月综合| 在线国产精品一区| 日本va欧美va欧美va精品| 国产亚洲精品精品国产亚洲综合| 老牛国内精品亚洲成av人片| 日韩成人综合| 免播放器亚洲| 国产精品亚洲人成在99www| 91亚洲国产成人久久精品| 蜜桃tv一区二区三区| 亚洲乱亚洲高清| 激情久久99| 蜜桃伊人久久| 精品美女在线视频| 亚洲欧美日本视频在线观看| 日韩福利视频导航| 久久精品1区| 奇米狠狠一区二区三区| 国产 日韩 欧美一区| 蜜桃视频在线观看一区二区| 久久av中文| 亚洲在线国产日韩欧美| 国产精品一区毛片| 精品中文一区| 美女免费视频一区| 亚洲一区有码| 国产综合色区在线观看| 日韩欧美久久| 一区二区三区视频免费观看| 国产麻豆精品| 一级欧洲+日本+国产| 国产精品观看| 亚洲一区欧美二区| 日韩电影免费网站| 青青草伊人久久| 激情欧美一区| 久久亚洲人体| 午夜天堂精品久久久久| 亚洲天堂1区| 国产精品视频一区二区三区四蜜臂| 国内激情久久| 成人在线视频免费看| 奇米色欧美一区二区三区| 激情六月综合| 97精品中文字幕| 青青青国产精品| 免费欧美一区| 久久男人av资源站| 欧美日韩视频免费看| 国产视频一区三区| 久久久一二三| 精品三区视频| 欧美视频精品全部免费观看| 水野朝阳av一区二区三区| 久久美女精品| 成人台湾亚洲精品一区二区| 日本91福利区| 天堂av在线一区| 欧美午夜精彩| 特黄毛片在线观看| 国产一精品一av一免费爽爽| 久久亚洲色图| 红桃视频国产一区| 欧美日韩在线网站| 日韩理论片av| 高清一区二区三区| 久久精品午夜| 国产精品视频首页| 欧美综合精品| 色狠狠一区二区三区| 婷婷亚洲成人| 国产乱人伦丫前精品视频| 日本va欧美va瓶| 国产精品嫩模av在线| 欧美日韩国产在线一区| 国产精品一区二区三区www| 一区二区三区网站| 免费日韩一区二区| 亚洲尤物在线| 99在线|亚洲一区二区| 99视频精品全部免费在线视频| 黄色精品视频| 国产精品久久久久久久久久10秀 | 久久久久亚洲精品中文字幕| 亚洲va久久久噜噜噜久久| 国产毛片一区| 国产精品美女久久久| 国产精品毛片在线| 香蕉久久夜色精品国产| 视频一区二区三区中文字幕| 国产婷婷精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 天堂va蜜桃一区二区三区| 亚洲欧美日本日韩| 丝袜国产日韩另类美女| 亚洲一区二区三区在线免费| 一级欧美视频| 日本免费在线视频不卡一不卡二| 日本特黄久久久高潮| 久久国产日韩欧美精品| 国产欧美日韩视频在线 | 国产精品欧美大片| 欧美精品97| 精品一区二区三区四区五区| 国产+成+人+亚洲欧洲在线| 欧美国产一级| 99精品在线观看| 在线精品小视频| 在线日韩成人| 国产精品手机在线播放| 国产91在线播放精品| 亚洲va在线| 国产亚洲一级| 日韩欧美久久| 麻豆久久久久久| 成人福利av| 欧美手机在线| 亚洲精品裸体| 久久久国产精品入口麻豆| 91视频一区| 国产综合精品一区| 亚洲一区有码| 老司机精品视频在线播放| 色网在线免费观看| 亚洲欧美久久| 国产精品久久久网站| 欧美aa一级| 亚洲五月综合| 欧美激情网址| 国内精品99| 人人爱人人干婷婷丁香亚洲| 精品视频网站| 中文日韩欧美| 国产日韩1区| 欧美日韩精品免费观看视完整 | 日韩精品一区第一页| 国产日韩在线观看视频| 国产一区二区三区四区| 久久亚洲在线| 日韩精品亚洲aⅴ在线影院| 里番精品3d一二三区| 在线成人动漫av| 日韩欧美中文字幕电影| 岛国av免费在线观看| 视频一区二区不卡| 国产精品分类| 尤物在线精品| 你懂的国产精品| 欧美在线影院| 久久99国产精品视频| 国产亚洲激情| 久久一区视频| 日韩一区二区久久| 国产精品久久久久久久久久齐齐 | 视频一区欧美日韩| 久久精品国产久精国产| 日韩一级精品| 久久三级毛片| 日韩在线一二三区| 国产videos久久| 蜜臀久久99精品久久久久宅男 | 久久精品卡一| 国产精品久久久久毛片大屁完整版| 久久久国产精品一区二区中文| 亚洲精选91| 91精品精品| 国产精品久久久久久久久久妞妞 | 无码日韩精品一区二区免费| 免费观看亚洲| 国产伦精品一区二区三区在线播放| 性欧美69xoxoxoxo| 久久久久九九精品影院| 亚洲综合激情在线| 激情久久中文字幕| 精品久久不卡| 久久精品xxxxx| 国产亚洲精品v| 色偷偷色偷偷色偷偷在线视频| 日韩一区免费| 黄色成人精品网站| 久久男人av资源站| 国产伦精品一区二区三区视频 | 久久亚洲美女| 久久三级视频| 麻豆精品在线观看| 中文字幕一区二区三区在线视频| 香蕉成人av| 国产精成人品2018| 亚洲理论在线| 欧美精品自拍| 另类中文字幕国产精品| 欧美精品二区| 日本va欧美va精品发布| 99成人在线| 久久亚洲国产| 午夜欧美巨大性欧美巨大| 精品网站999| 国产精品日本一区二区三区在线| 蜜桃视频免费观看一区|