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

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

Android 自定義LineLayout實現滿屏任意拖動功能的示例代碼

瀏覽:141日期:2022-09-23 17:40:47

1.前言

在開發中,會有需求實現控件在屏幕隨意拖動,這就需要自定義View,然后在OnTouchEvent事件中,處理MotionEvent.ACTION_MOVE事件,然后通過坐標點傳值給onlayout方法,來實現控件的任意拖動,具體代碼如下:

import android.content.Context;import android.util.AttributeSet;import android.view.Display;import android.view.MotionEvent;import android.view.WindowManager;import android.widget.LinearLayout;public class DragLineLayout extends LinearLayout { private int mWidth; private int mHeight; private int mScreenWidth; private int mScreenHeight; private Context mContext; private onLocationListener mLocationListener;/*listen to the Rect */ //是否拖動 private boolean isDrag = false; public boolean isDrag() { return isDrag; } public DragView(Context context, AttributeSet attrs) { super(context, attrs); this.mContext = context; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); mWidth = getMeasuredWidth(); mHeight = getMeasuredHeight(); mScreenWidth = getScreenWidth(mContext); mScreenHeight = getScreenHeight(mContext) - getStatusBarHeight(); } public int getStatusBarHeight() { int resourceId = mContext.getResources().getIdentifier('status_bar_height', 'dimen', 'android'); return mContext.getResources().getDimensionPixelSize(resourceId); } public int getScreenWidth(Context context) { WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); return display.getWidth(); } public int getScreenHeight(Context context) { WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); return display.getHeight(); } private float mDownX; private float mDownY; @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); if (this.isEnabled()) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: isDrag = false; mDownX = event.getX(); mDownY = event.getY(); break; case MotionEvent.ACTION_MOVE: final float mXdistance = event.getX() - mDownX; final float mYdistance = event.getY() - mDownY; int l, r, t, b; //當水平或者垂直滑動距離大于10,才算是拖動事件 if (Math.abs(mXdistance) > 10 || Math.abs(mYdistance) > 10) { isDrag = true; l = (int) (getLeft() + mXdistance); r = l + mWidth; t = (int) (getTop() + mYdistance); b = t + mHeight; //邊界判斷,不讓布局滑出界面 if (l < 0) { l = 0; r = l + mWidth; } else if (r > mScreenWidth) { r = mScreenWidth; l = r - mWidth; } if (t < 0) { t = 0; b = t + mHeight; } else if (b > mScreenHeight) { b = mScreenHeight; t = b - mHeight; } //回調移動后的坐標點 if(mLocationListener!=null){ mLocationListener.locationRect((l+r)/2,(t+b)/2); } this.layout(l, t, r, b); } break; case MotionEvent.ACTION_UP: setPressed(false); break; case MotionEvent.ACTION_CANCEL: setPressed(false); break; } return true; } return false; } public void setLocationListener(onLocationListener LocationListener) { this.mLocationListener = LocationListener; } public interface onLocationListener { void locationRect(float locationX, float locationY); }}

2.在代碼中的運用

<com.xinrui.guestservice.view.DragLineLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='@dimen/dp_200' android:layout_height='@dimen/dp_110' android:orientation='vertical'> <RelativeLayout android:layout_width='match_parent' android:layout_height='@dimen/dp_50'> <EditText android: android:layout_width='match_parent' android:layout_height='@dimen/dp_50' android:background='@drawable/edit_bg' /> </RelativeLayout> <RelativeLayout android:layout_width='match_parent' android:layout_height='@dimen/dp_55' android:layout_marginTop='@dimen/margin_5' android:background='@drawable/paint_bg'> <TextView android: android:layout_width='@dimen/dp_50' android:layout_height='@dimen/dp_50' android:layout_alignParentLeft='true' android:layout_alignParentTop='true' android:layout_marginTop='@dimen/margin_5' android:background='@drawable/main_selector_write' android:clickable='true' /> <TextView android: android:layout_width='@dimen/dp_50' android:layout_height='@dimen/dp_50' android:layout_alignParentTop='true' android:layout_marginLeft='@dimen/dp_10' android:layout_marginTop='@dimen/margin_5' android:layout_toRightOf='@id/paint_typeface' android:background='@drawable/main_selector_write' android:clickable='true' /> </RelativeLayout></com.xinrui.guestservice.view.DragLineLayout>

3.這樣就可以在Activity 加載這個xml 來實現任意拖動功能

總結

到此這篇關于Android 自定義LineLayout實現滿屏任意拖動功能的示例代碼的文章就介紹到這了,更多相關Android 自定義LineLayout實現滿屏任意拖動內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合视频一区| 国产白浆在线免费观看| 91精品一区国产高清在线gif| 国内精品亚洲| 性一交一乱一区二区洋洋av| 欧美少妇精品| 久久国产麻豆精品| 精品国产一级| 精精国产xxxx视频在线播放| 日韩精品免费视频一区二区三区| 精品日韩在线| 精品午夜视频| 日韩精品亚洲一区二区三区免费| 日韩激情一区二区| 欧美精品国产一区| 麻豆国产精品| 亚洲成人va| 9国产精品视频| 日韩精品一区二区三区av | 999久久久91| 亚洲一区二区免费看| 亚洲精一区二区三区| 日韩av中文字幕一区二区三区| 国产精品三级| 播放一区二区| 免费人成网站在线观看欧美高清| 欧美一区成人| 亚洲黄色网址| 欧美一级专区| 国产精品一区亚洲| 免费高潮视频95在线观看网站| 亚洲国产一区二区三区在线播放 | 日韩精品久久久久久久软件91| 91精品丝袜国产高跟在线| 国产精品美女在线观看直播| 久久精品日韩欧美| 欧美成人基地| 国产欧美一区二区色老头| 亚洲资源网站| 日韩久久一区二区三区| 午夜在线观看免费一区| av高清不卡| 久久99精品久久久野外观看| 91欧美精品| 日韩三级一区| 亚洲91网站| 久久久影院免费| 99国产精品久久久久久久| 日韩精品国产精品| 热三久草你在线| 中文字幕一区二区三区在线视频| 国产精品亚洲片在线播放| 日本少妇一区| 日本在线不卡视频| 成人日韩在线| 日韩精品第一| 欧美~级网站不卡| 国产精选久久| 国产精品日本| 成人精品动漫一区二区三区| 国产农村妇女精品一二区| 国产日韩视频| 五月综合激情| 91视频精品| 国产亚洲一区| 野花国产精品入口| 国产福利电影在线播放| 亚洲丝袜啪啪| 少妇久久久久| 国产日韩高清一区二区三区在线 | 亚洲一区免费| 国产精品xxx在线观看| 国产精品永久| 日本а中文在线天堂| zzzwww在线看片免费| 亚洲免费高清| 国产欧美视频在线| 99国产精品自拍| 欧美1区2区3| 蜜桃tv一区二区三区| 美女国产精品| 日韩免费视频| 国产精品久久久久9999高清| 视频一区二区国产| 精品国产一级| 日本vs亚洲vs韩国一区三区二区| 不卡在线一区二区| 高清一区二区| 国产精品黄网站| 婷婷视频一区二区三区| 米奇777超碰欧美日韩亚洲| 久久亚洲资源中文字| 亚洲精品裸体| 午夜宅男久久久| 91精品国产91久久久久久黑人| 国产精品传媒麻豆hd| 综合亚洲色图| 亚洲自拍另类| 五月精品视频| 日韩国产一区二区三区| 美女国产精品久久久| 日韩精品91亚洲二区在线观看| 久久成人亚洲| 欧美在线网站| 亚洲福利免费| 久久精品亚洲欧美日韩精品中文字幕| 精品久久91| 久久影视三级福利片| 国产精品一区二区中文字幕| 亚洲精品美女91| 亚洲三级毛片| 国产高潮在线| 久久久久午夜电影| 成人日韩av| 久久国产亚洲| 成人综合一区| 国产一区调教| 欧美影院精品| 欧美黄色一区| 黑森林国产精品av| 91精品一区国产高清在线gif| 日韩精品视频在线看| 好吊日精品视频| 国产精品毛片| 久久xxxx| 日本不卡的三区四区五区| 亚洲精品国产精品粉嫩| 亚洲日产国产精品| 婷婷五月色综合香五月| 中文在线不卡| 中文无码久久精品| 日韩精品一区二区三区中文在线| 日韩精品久久理论片| 青草久久视频| 麻豆一区二区99久久久久| 精品亚洲成人| 日韩在线短视频| 免费久久久久久久久| 亚洲男女自偷自拍| 午夜精品影视国产一区在线麻豆| 亚洲ab电影| 国产精品九九| www.51av欧美视频| 欧美亚洲精品在线| 日韩视频精品在线观看| 中文字幕日本一区| 国产精选久久| 久久电影tv| 欧美网站在线| 日韩福利视频导航| 老司机免费视频一区二区三区| 麻豆网站免费在线观看| 91精品久久久久久久久久不卡| 激情五月色综合国产精品| 日韩精品中文字幕吗一区二区| 91亚洲成人| 国产一区福利| 精品网站999| 蘑菇福利视频一区播放| 欧美影院视频| 日韩精品午夜| 正在播放日韩精品| 精品一区二区三区免费看| 日本伊人久久| 亚洲一区欧美| 日韩欧美三区| 精品国产一区二| 欧美日韩精品在线一区| 视频一区二区欧美| 欧美国产亚洲精品| 亚洲精品国产偷自在线观看| 亚洲18在线| 在线看片国产福利你懂的| 性欧美长视频| 国产精品久久久久久久久久齐齐| 久久精品影视| 欧美日韩a区| 久久九九国产| 91嫩草精品| 欧美99久久| 国产精品国码视频| 欧美特黄一区| 精品视频一区二区三区四区五区 | 好吊视频一区二区三区四区| 日本免费新一区视频| 国产精品99视频| 亚洲小说春色综合另类电影| 国产一区二区三区四区二区| 亚洲欧美日韩国产综合精品二区 | 蜜桃视频第一区免费观看| 狂野欧美性猛交xxxx| 亚洲精品97| 久久97视频| 亚洲天堂日韩在线| sm捆绑调教国产免费网站在线观看 | 久久视频国产| 久久精品999| 亚洲美洲欧洲综合国产一区 | 国产欧美日韩精品一区二区免费| 99久精品视频在线观看视频|