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

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

Android實現(xiàn)懸浮圖片

瀏覽:24日期:2022-09-22 15:38:37

本文實例為大家分享了Android實現(xiàn)懸浮圖片的具體代碼,供大家參考,具體內(nèi)容如下

@SuppressLint('AppCompatCustomView')public class MoveImageView extends ImageView { //按下那一刻的坐標(biāo)和 控件上下左右距離 private float lastX; private float lastY; private int left; private int top; private int right; private int bottom; //如果是拖動事件就不用響應(yīng)點擊事件 boolean isMove = false; boolean isAnimatoring = false; //屏幕寬高 private int screenWidthPx; private int screenHeightPx; public MoveImageView(Context context) { this(context, null); } public MoveImageView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public MoveImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); screenWidthPx = getScreenWidthPx(getContext()); screenHeightPx = getScreenHeightPx(getContext()); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //動畫執(zhí)行過程中,不響應(yīng)一切操作, // 這里相當(dāng)于不讓其走后面的MotionEvent.ACTION_MOVE:與MotionEvent.ACTION_UP: if (isAnimatoring) { return false; } lastX = event.getRawX(); lastY = event.getRawY(); left = getLeft(); top = getTop(); right = getRight(); bottom = getBottom(); break; case MotionEvent.ACTION_MOVE: isMove = true; float x = event.getRawX(); float y = event.getRawY(); int l = (int) (left + (x - lastX)); int t = (int) (top + (y - lastY)); int r = (int) (right + (x - lastX)); int b = (int) (bottom + (y - lastY)); layout(l, t, r, b); break; case MotionEvent.ACTION_UP: if (isMove) { //如果頂部拖出屏幕外面,回正 if (getTop() < 0) { layout(getLeft(), 0, getRight(), getHeight()); } //getBottom() 獲取到的是 控件底部到父容器頂部的距離,所以需要減去狀態(tài)欄的高度 int bottomHeight = screenHeightPx - getStatusBarHeight(getContext()); //如果底部拖出屏幕外面,回正 if (getBottom() > bottomHeight) { layout(getLeft(), bottomHeight-getHeight(), getRight(), bottomHeight); } isMove = false; startAnimation(); return true; } return super.onTouchEvent(event); } return super.onTouchEvent(event); } private void startAnimation() { isAnimatoring = true; //右邊距 int marinRight = DisplayUtils.dpToPx(20); int endValue = screenWidthPx - marinRight; ValueAnimator animator = ValueAnimator.ofInt(getRight(), endValue); animator.setDuration(Math.abs(endValue - getRight()) > 1000 ? 1000 : Math.abs(endValue - getRight())); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { int curValue = (int) animation.getAnimatedValue(); layout(curValue - getWidth(), getTop(), curValue, getHeight() + getTop()); } }); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { isAnimatoring = false; animator.removeAllUpdateListeners(); animator.removeAllListeners(); } }); animator.start(); } /** * 獲取狀態(tài)欄高度 */ public static int getStatusBarHeight(Context context) { int result = 24; int resId = context.getResources().getIdentifier('status_bar_height', 'dimen', 'android'); if (resId > 0) { result = context.getResources().getDimensionPixelSize(resId); } else { result = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, result, Resources.getSystem().getDisplayMetrics()); } return result; } public static int getScreenWidthPx(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); if (windowManager != null) {// windowManager.getDefaultDisplay().getMetrics(dm); windowManager.getDefaultDisplay().getRealMetrics(dm); return dm.widthPixels; } return 0; } public static int getScreenHeightPx(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); if (windowManager != null) {// windowManager.getDefaultDisplay().getMetrics(dm); windowManager.getDefaultDisplay().getRealMetrics(dm); return dm.heightPixels; } return 0; }}

應(yīng)用:

布局文件:

<?xml version='1.0' encoding='utf-8'?><RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' tools:context='.TestActivity'> <com.lingtao.ltvideo.widgets.MoveImageView android:layout_width='50dp' android: android:layout_height='50dp' android:layout_alignParentRight='true' android:layout_alignParentBottom='true' android:layout_marginBottom='100dp' android:layout_marginRight='20dp' android:src='http://m.b3g6.com/bcjs/9076.html#ff0000' /></RelativeLayout>

Activity:

public class TestActivity extends AppCompatActivity { private MoveImageView moveImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test2); moveImageView = ((MoveImageView) findViewById(R.id.MoveImageView)); moveImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(TestActivity.this, '點擊事件', Toast.LENGTH_SHORT).show(); } }); }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲制服欧美另类| 中文字幕av一区二区三区人| 日韩福利视频导航| 91精品国产自产精品男人的天堂| 在线成人动漫av| 美女久久99| 日韩精品中文字幕吗一区二区 | 欧美日韩日本国产亚洲在线 | 成人影视亚洲图片在线| 欧美日韩一区二区三区四区在线观看 | 国产一区二区三区网| 欧美三区不卡| 日韩高清二区| 亚洲精品在线二区| 亚洲综合中文| 老鸭窝亚洲一区二区三区| 色婷婷狠狠五月综合天色拍| 高清av不卡| 四季av一区二区凹凸精品| 麻豆精品新av中文字幕| 国产乱码精品一区二区三区四区 | 狠狠干成人综合网| 蜜桃tv一区二区三区| 亚洲成人不卡| 日韩中文影院| 性欧美xxxx免费岛国不卡电影| 日韩成人a**站| 色在线视频观看| 天堂av在线| 91精品婷婷色在线观看| 欧美日韩国产观看视频| 成人一二三区| 亚洲va中文在线播放免费| 天堂中文av在线资源库| 91精品一区二区三区综合在线爱 | 国产亚洲一区二区手机在线观看| 国产精品成人**免费视频| 国产欧美另类| 久久久久亚洲精品中文字幕| 免费一级欧美在线观看视频 | 国模 一区 二区 三区| 欧美日韩国产精品一区二区亚洲| 精品少妇av| 久久久久久夜| 欧美日韩中文字幕一区二区三区 | 老司机免费视频一区二区三区| 久久成人av| 首页国产精品| 国产字幕视频一区二区| 久久午夜精品一区二区| 日韩在线观看一区二区三区| 国产亚洲一区| 国产精选在线| 亚洲少妇一区| 91精品国产经典在线观看| 欧美日本久久| 国产在线日韩精品| 激情久久五月| 日韩av二区在线播放| 精品久久97| 国产专区一区| 色狠狠一区二区三区| 国产精成人品2018| 久久久水蜜桃av免费网站| 99riav1国产精品视频| 日韩区一区二| 手机在线电影一区| 亚洲欧美日韩国产一区| 国产精品视频3p| 日韩精品影视| 国产精品普通话对白| 国产精品一卡| 亚洲天堂免费电影| 免播放器亚洲| 另类综合日韩欧美亚洲| 在线看片不卡| 国产伦精品一区二区三区千人斩 | 日韩在线一区二区| 欧美激情综合| 亚洲精品在线观看91| 国产精品网站在线看| 精品成人免费一区二区在线播放| 亚洲影院天堂中文av色| 久久精品一本| 视频一区二区三区入口| 精品国产日韩欧美精品国产欧美日韩一区二区三区| 久久精品免费一区二区三区| 亚洲2区在线| 国产精品久久久久久久免费观看 | 久久久久久久久久久妇女 | 国产成人77亚洲精品www| 国产劲爆久久| 麻豆9191精品国产| 成人欧美一区二区三区的电影| 亚洲一区二区三区中文字幕在线观看| 美女视频网站久久| 99在线观看免费视频精品观看| 国产精品巨作av| 99香蕉国产精品偷在线观看| 久久久国产精品网站| 美国三级日本三级久久99| 国产精品13p| 日本亚洲视频| 在线成人动漫av| 欧美国产视频| 9久re热视频在线精品| 国精品产品一区| 日韩一区二区三免费高清在线观看| 久久久成人网| 亚洲一二三区视频| se01亚洲视频| 国产日韩一区二区三区在线播放| 91精品二区| 精品黄色一级片| 亚洲一级在线| 国产suv精品一区二区四区视频 | 你懂的国产精品| 亚洲精品国产日韩| 国产精品88久久久久久| 国产精品男女| 免费久久99精品国产| 一本大道色婷婷在线| 日韩三级一区| 天堂成人免费av电影一区| 欧美色图一区| 色一区二区三区| 精品亚洲精品| 国产区精品区| 日韩精选在线| 蜜臀久久99精品久久久画质超高清 | 日本精品不卡| 97人人精品| 成人午夜网址| 精品视频黄色| 老司机免费视频一区二区| 日本少妇精品亚洲第一区| 免费看精品久久片| 国产一级久久| 亚洲欧美激情诱惑| 人人香蕉久久| 久久蜜桃资源一区二区老牛| 日韩av在线播放网址| 欧美在线91| 蜜臀久久久久久久| 玖玖精品视频| 久久亚洲风情| 香蕉久久国产| 久久午夜精品一区二区| 亚洲免费激情| 亚洲黄页一区| 日韩亚洲国产欧美| aⅴ色国产欧美| 久久高清国产| 亚洲精品大片| 日韩av午夜在线观看| 91大神在线观看线路一区| 日韩精品一区二区三区中文在线| 日韩专区欧美专区| 蜜芽一区二区三区| 蜜臀久久99精品久久久画质超高清| 久久国产88| 久久www成人_看片免费不卡| 99香蕉国产精品偷在线观看 | 日韩中文字幕1| 日本欧美在线看| 亚洲欧洲日韩| 欧美日韩精品一区二区三区视频 | 国产一区调教| 国产亚洲亚洲| 国产精品www.| 成人av二区| 国产精品久av福利在线观看| 高清av不卡| 亚洲精品大全| av中文资源在线资源免费观看| 午夜国产精品视频免费体验区| 日韩国产欧美一区二区三区| 日韩av专区| 在线精品一区| 97视频热人人精品免费| 中文在线一区| 精品女同一区二区三区在线观看| 尤物在线精品| 精品一区二区男人吃奶| 视频一区二区三区入口| 日本一二区不卡| 免费人成黄页网站在线一区二区| 久久精品资源| 男人操女人的视频在线观看欧美| 成人在线视频区| 婷婷成人av| 波多野结衣一区| 精品国产午夜肉伦伦影院| 蜜乳av另类精品一区二区| 精品国产亚洲一区二区三区在线 | 国产精品午夜av| 国产婷婷精品| 日韩中文欧美| 国产精品久久久久9999高清| 视频一区国产视频|