成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng)功能的示例代碼

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

1.前言

在開(kāi)發(fā)中,會(huì)有需求實(shí)現(xiàn)控件在屏幕隨意拖動(dòng),這就需要自定義View,然后在OnTouchEvent事件中,處理MotionEvent.ACTION_MOVE事件,然后通過(guò)坐標(biāo)點(diǎn)傳值給onlayout方法,來(lái)實(shí)現(xiàn)控件的任意拖動(dòng),具體代碼如下:

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 */ //是否拖動(dòng) 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; //當(dāng)水平或者垂直滑動(dòng)距離大于10,才算是拖動(dòng)事件 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; } //回調(diào)移動(dòng)后的坐標(biāo)點(diǎn) 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.在代碼中的運(yùn)用

<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 加載這個(gè)xml 來(lái)實(shí)現(xiàn)任意拖動(dòng)功能

總結(jié)

到此這篇關(guān)于Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng)功能的示例代碼的文章就介紹到這了,更多相關(guān)Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美麻豆精品久久久久久| 国产精品欧美日韩一区| 香蕉成人久久| 亚洲欧美区自拍先锋| 从欧美一区二区三区| 欧美麻豆精品久久久久久| 久久成人免费电影| 欧美日韩一区三区| 国模少妇一区二区三区| 欧美日韩国产免费一区二区| 麻豆91免费看| 欧美日韩视频专区在线播放| 六月婷婷色综合| 欧美亚洲国产一区在线观看网站| 日韩福利视频网| 色婷婷综合久色| 日韩在线播放一区二区| 久久国产福利国产秒拍| 欧美精品tushy高清| 狠狠久久亚洲欧美| 欧美一区在线视频| thepron国产精品| 久久综合久色欧美综合狠狠| 91在线观看地址| 欧美激情在线一区二区三区| 国产精品s色| 亚洲靠逼com| 亚洲一区二区三区精品视频 | 日本一区二区三区四区在线视频| 欧美国产一区二区三区激情无套| 中文乱码免费一区二区| 亚洲国产精品毛片| 亚洲综合久久av| 久久精品男女| 免费美女久久99| 欧美日韩高清影院| 播五月开心婷婷综合| 中国av一区二区三区| av成人激情| 青青草成人在线观看| 91精品国产一区二区| 91蜜桃视频在线| 亚洲精选免费视频| 色美美综合视频| 国产91精品一区二区| 国产性天天综合网| 一区二区三区四区五区精品视频 | 粉嫩13p一区二区三区| 久久久激情视频| 亚洲精品一区二区三区av| 天天av天天翘天天综合网色鬼国产 | 国产一区二区在线看| 欧美成人激情免费网| 欧美日韩亚洲一区二区三区在线观看 | 亚洲电影中文字幕在线观看| 欧美中文字幕一区二区三区| 国产乱码精品一区二区三区av| 久久蜜臀精品av| 99国产一区| 国产在线播放一区三区四| 精品成a人在线观看| 亚洲精品社区| 欧美aaaaa成人免费观看视频| 91精品久久久久久蜜臀| 91麻豆精品视频| 亚洲一级片在线观看| 8x福利精品第一导航| 国产专区一区| 美女视频黄a大片欧美| 久久婷婷国产综合精品青草| 亚洲精品国产系列| 久久超碰97人人做人人爱| 国产午夜亚洲精品羞羞网站| 国产精品日韩欧美一区二区| 国内精品伊人久久久久影院对白| 精品国产a毛片| 99国产成+人+综合+亚洲欧美| 久久不见久久见免费视频1| 国产欧美一区二区精品婷婷| 米奇777在线欧美播放| 成人av网站在线观看| 亚洲一区日韩精品中文字幕| 91精品欧美福利在线观看| 亚洲美洲欧洲综合国产一区| 久久精品国产久精国产| 国产精品久久久久久久久搜平片| 色婷婷精品大视频在线蜜桃视频| a4yy欧美一区二区三区| 性做久久久久久免费观看欧美| 日韩视频国产视频| 亚洲国产1区| 国产成人小视频| 亚洲福利视频一区二区| 久久久不卡网国产精品二区| 色哟哟亚洲精品| 国内精品嫩模av私拍在线观看| 免费国产亚洲视频| 中文字幕欧美一区| 91麻豆精品国产91久久久更新时间| 一区二区三区你懂的| av电影天堂一区二区在线 | 亚洲欧洲日韩av| 欧美私模裸体表演在线观看| 国产精品99一区二区| 精品亚洲成av人在线观看| 亚洲日本在线天堂| 日韩午夜激情av| 美日韩精品视频| 国产精品国产三级国产专区53| 国产在线视频一区二区| 一片黄亚洲嫩模| 久久久精品综合| 欧美日韩一区二区三区在线 | 国产三级一区二区| 欧美视频一区在线观看| 一区在线视频| 成人免费观看视频| 日本强好片久久久久久aaa| 国产精品萝li| 欧美一区二区三区思思人| 新67194成人永久网站| 色综合欧美在线视频区| 国产精品中文字幕一区二区三区| 一区二区三区精品在线观看| 久久男人中文字幕资源站| 欧美色精品天天在线观看视频| 亚洲国产精品久久久久久女王 | 黑人巨大精品欧美黑白配亚洲| 亚洲欧美国产三级| www激情久久| 欧美日韩久久一区| 久久精品综合| 99视频在线精品国自产拍免费观看| 99re热这里只有精品免费视频| 国产一区二区三区免费| 热久久免费视频| 亚洲电影中文字幕在线观看| 亚洲天堂网中文字| 国产日产欧产精品推荐色 | 亚洲香蕉网站| 91尤物视频在线观看| 国产成人免费视频一区| 九九精品一区二区| 日韩一区精品视频| 亚洲图片欧美色图| 一区二区三区在线观看国产| 中文字幕一区二区三区在线不卡| 欧美精品一区二区三区很污很色的| 91.com在线观看| 欧美日韩精品一区二区| 91国在线观看| 免费亚洲电影| 亚洲一区影院| 妖精视频成人观看www| 精品动漫3d一区二区三区免费版 | 国产成人综合在线| 国产一区二区三区蝌蚪| 精品亚洲成a人| 麻豆国产一区二区| 美女精品一区二区| 美女一区二区久久| 美女网站一区二区| 免费国产亚洲视频| 日韩不卡手机在线v区| 婷婷综合另类小说色区| 亚洲不卡av一区二区三区| 亚洲午夜私人影院| 亚洲一本大道在线| 天天操天天干天天综合网| 性久久久久久久| 午夜久久久影院| 天堂午夜影视日韩欧美一区二区| 亚洲18女电影在线观看| 偷拍与自拍一区| 美女在线观看视频一区二区| 麻豆极品一区二区三区| 久久99国内精品| 国内成人自拍视频| 国产成人亚洲精品狼色在线| 成人在线视频一区| 99久久久精品免费观看国产蜜| 91一区二区三区在线观看| 欧美日韩国产在线一区| 亚洲私人影院| 在线视频欧美一区| 欧美主播一区二区三区美女 久久精品人| 久久国产精品一区二区三区| 久久综合九色综合网站| 欧美日韩综合在线免费观看| 日韩一区二区在线观看视频| 精品国产免费人成在线观看| 国产日韩欧美a| 中文字幕日韩av资源站| 一区二区三区中文字幕在线观看| 午夜精品久久一牛影视| 毛片基地黄久久久久久天堂| 国产老肥熟一区二区三区| 99久久精品久久久久久清纯| 欧美日韩中文| 亚洲欧洲日本mm|