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

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

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

瀏覽:146日期: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| av高清不卡| 亚洲天堂一区二区| 国产96在线亚洲| 国产一区二区久久久久| 激情国产在线| 高清一区二区| 成人精品高清在线视频| 香蕉成人av| 亚洲免费在线| 久久国产麻豆精品| 精品久久中文| 免费精品国产| 婷婷精品在线| 精品国产乱码久久久久久樱花| 国产在线观看www| 91成人精品| 深夜福利亚洲| 麻豆精品在线| 亚洲精品99| 88久久精品| 国产成人a视频高清在线观看| 日韩精品91| 久久久久网站| 欧美亚洲tv| 久久av网站| 一区视频在线| 欧美激情三区| 亚洲在线免费| 国产精品啊啊啊| 国产偷自视频区视频一区二区| 91午夜精品| 日韩一区二区三区在线免费观看| 蜜桃视频第一区免费观看| 风间由美中文字幕在线看视频国产欧美| 色乱码一区二区三区网站| 99视频精品视频高清免费| 男女男精品视频网| 国产精品宾馆| 日韩av一级片| 日韩一区二区免费看| 国产精品久久久久9999高清| 亚洲黄色在线| 亚洲伦乱视频| 国产成人a视频高清在线观看| 日韩激情综合| 亚洲一区二区动漫| 在线日韩一区| 日韩伦理在线一区| 国内揄拍国内精品久久| 老司机精品久久| 国产成人精品免费视| 中文字幕成人| 蜜臀久久久99精品久久久久久| 国产一区日韩欧美| 啪啪国产精品| 日韩精品免费一区二区三区| 国产高清精品二区| 热久久久久久| 国产精久久久| 老司机精品视频在线播放| 91p九色成人| 青青在线精品| 国产精品二区影院| 国产精品巨作av| 欧美亚洲三级| 国产日韩免费| 国产精品久久久久久久免费软件 | 亚洲激情国产| 免费av一区二区三区四区| 影音国产精品| 亚洲三级毛片| 国产精品欧美三级在线观看| 精品视频国内| 精品国产午夜肉伦伦影院| 国产精品嫩草影院在线看| 精品国产亚洲一区二区三区在线| 亚州av乱码久久精品蜜桃| 欧美日韩在线网站| 夜夜嗨一区二区三区| 欧美日韩国产在线一区| 久久亚洲电影| 国产亚洲一区二区三区不卡| 欧美aⅴ一区二区三区视频| 精品一区二区三区在线观看视频| 精品久久在线| 日韩午夜av在线| 91欧美极品| 成人羞羞在线观看网站| 精品欧美日韩精品| 国产毛片一区| 国产一区二区三区视频在线| 91精品99| 国产美女亚洲精品7777| 最新中文字幕在线播放 | 里番精品3d一二三区| 免费久久久久久久久| 久久国产生活片100| 亚洲精品一级二级| 日韩高清在线不卡| 免费av一区| 国产一区二区三区亚洲| 日韩中文字幕在线一区| 亚洲不卡系列| 麻豆精品在线| 日韩av一二三| av亚洲在线观看| 精品中文一区| 91精品综合| 亚洲国产成人二区| 国产精品毛片视频| 日本三级亚洲精品| 久久福利毛片| 国产农村妇女精品一区二区| 99久久99视频只有精品| 九九九精品视频| 国产精品黄色| 国产精品麻豆成人av电影艾秋| 午夜亚洲福利| 人人精品人人爱| 快she精品国产999| 国产视频一区三区| 亚洲国产日韩欧美在线| 亚洲啊v在线| 久久婷婷久久| 亚洲香蕉网站| 欧美在线亚洲综合一区| 欧美精品一线| 六月丁香综合| 日韩欧美美女在线观看| 亚洲三级精品| 97久久亚洲| 国产激情精品一区二区三区| 国产精品videossex久久发布 | 欧美.日韩.国产.一区.二区| 国产亚洲精品美女久久| 日韩精品五月天| 综合一区av| 亚洲精品麻豆| 麻豆视频久久| 精品丝袜在线| 99国产精品久久久久久久 | 国产精品一区三区在线观看| 国产亚洲永久域名| 国产精品丝袜xxxxxxx| 亚洲精品看片| 久久三级中文| 欧美日韩国产在线观看网站 | 亚洲精品国产嫩草在线观看| 亚洲激情久久| 国产一卡不卡| 女人天堂亚洲aⅴ在线观看| 日韩一区精品| www在线观看黄色| 国产精品毛片| 久久99青青| 性欧美69xoxoxoxo| 亚洲aa在线| 日本不卡免费高清视频在线| 免费看黄色91| 国产在线一区不卡| 亚洲久久视频| 首页国产精品| 日韩高清不卡一区| 久久精品国产亚洲夜色av网站| 日韩在线观看中文字幕| 色婷婷色综合| 国产精品亲子伦av一区二区三区| 欧美国产91| 激情综合婷婷| 亚洲精品乱码| 性欧美69xoxoxoxo| 精品三级在线| 日韩国产一区二| 红桃视频亚洲| 四虎4545www国产精品| 国产精品白丝一区二区三区| 免费日韩av| 欧美1级日本1级| 在线亚洲人成| 蜜臀国产一区| 日韩高清中文字幕一区二区| 麻豆精品新av中文字幕| 日韩专区视频网站| 日韩激情av在线| 亚洲欧美久久久| 久久婷婷亚洲| 91精品精品| 成人国产精品一区二区免费麻豆| 日韩动漫一区| 日韩激情av在线| 久久国产日韩欧美精品| 国产人成精品一区二区三| 日韩精品国产精品| 日韩精品中文字幕一区二区| 亚洲欧美网站在线观看|