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

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

Android實現懸浮圖片

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

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

@SuppressLint('AppCompatCustomView')public class MoveImageView extends ImageView { //按下那一刻的坐標和 控件上下左右距離 private float lastX; private float lastY; private int left; private int top; private int right; private int bottom; //如果是拖動事件就不用響應點擊事件 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: //動畫執行過程中,不響應一切操作, // 這里相當于不讓其走后面的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() 獲取到的是 控件底部到父容器頂部的距離,所以需要減去狀態欄的高度 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(); } /** * 獲取狀態欄高度 */ 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; }}

應用:

布局文件:

<?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://www.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(); } }); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一本色道久久精品| 国产精品黄色| 久久99精品久久久野外观看| 久久99伊人| 欧美国产先锋| 欧美一区=区三区| 欧美日韩一视频区二区| 日本在线视频一区二区| 日韩专区视频网站| 国产精品香蕉| yellow在线观看网址| 中文字幕在线视频网站| 高清不卡亚洲| 伊人精品一区| 亚洲精品在线a| 国产日韩欧美一区| 国产成人免费视频网站视频社区| 久久国产精品色av免费看| 欧美gv在线| 亚洲精品成人图区| 视频一区中文字幕国产| 亚洲黄色影院| 国产韩日影视精品| 亚洲精品乱码| 午夜影院欧美| 国产免费播放一区二区| 日韩欧美精品| 香蕉精品视频在线观看| 日本伊人午夜精品| 成人在线超碰| 欧美在线亚洲综合一区| 国产欧美日韩免费观看| 国语对白精品一区二区| 亚洲免费一区二区| 欧美亚洲tv| 久久精品99久久无色码中文字幕| 免费看欧美美女黄的网站| 麻豆91小视频| 亚洲中午字幕| 国产成人77亚洲精品www| 中文字幕免费精品| 99久久夜色精品国产亚洲1000部| 日本午夜精品久久久| 99精品在线免费在线观看| 青草国产精品| 在线视频精品| 91精品久久久久久久久久不卡| 色婷婷成人网| 99国产精品久久久久久久| 久久爱www.| 天堂va在线高清一区| 黄色av一区| 成人av二区| а√在线中文在线新版| 国产精品xxx| 国产亚洲人成a在线v网站| 巨乳诱惑日韩免费av| 日韩精品免费一区二区三区| 国产精品22p| 国产精品美女久久久久久不卡| 日韩在线播放一区二区| 99riav国产精品| av亚洲在线观看| 久久精品中文| 欧美国产一级| 国产一区二区三区四区| 国产黄色精品| 国内在线观看一区二区三区| 国产精品一区二区免费福利视频| 综合激情视频| 日韩av成人高清| 日韩av在线免费观看不卡| 亚洲精品伊人| 国产欧美激情| 老司机精品在线| 青青青免费在线视频| 蜜桃精品在线| 99久久久久| 亚洲精品国产嫩草在线观看| 日韩欧美一区二区三区免费看| 国产一精品一av一免费爽爽| 国产欧美一区二区三区国产幕精品| 免费日韩成人| 视频一区中文字幕精品| 久久精品av麻豆的观看方式| 国产亚洲精品精品国产亚洲综合| 日本蜜桃在线观看视频| 午夜在线精品偷拍| 国产一区丝袜| 亚洲精品少妇| 国产一区二区三区四区| 欧美91在线|欧美| 亚洲欧美日韩高清在线| 日韩专区一卡二卡| 99国产精品久久久久久久成人热| 麻豆视频一区二区| 久久av网站| 综合一区av| 青青草国产成人99久久| 红桃视频欧美| 美女国产精品| 激情91久久| 亚洲欧洲另类| 中文字幕亚洲精品乱码| 午夜国产精品视频| 精品一区二区三区中文字幕| 欧美精品日日操| 2023国产精品久久久精品双| 亚洲一二三区视频| 久久国产毛片| 久久精品三级| 国产精选在线| 成人亚洲精品| 久久精品播放| 欧美另类专区| 欧美日韩国产免费观看视频| 欧美激情麻豆| 97精品国产| 激情自拍一区| 在线综合亚洲| 欧美亚洲国产精品久久| 天堂俺去俺来也www久久婷婷| 蜜臀国产一区二区三区在线播放 | 国产综合激情| 亚洲毛片网站| 亚洲h色精品| 精品一区二区三区免费看| 亚洲精品伦理| 亚洲精品一区二区妖精| 国产一区二区三区四区二区 | 美女国产精品久久久| 日韩av一级| 国产一区调教| 国产日韩精品视频一区二区三区| 成人亚洲欧美| 欧美日韩亚洲在线观看| 麻豆视频久久| 欧美91在线| 日本高清久久| 欧美影院视频| 免费亚洲婷婷| 久久99久久久精品欧美| 欧美天堂在线| 日本不卡视频在线观看| 亚洲精品婷婷| 日韩av电影一区| 欧美激情在线精品一区二区三区| 国产精品丝袜在线播放| 国产高清亚洲| 国产第一亚洲| 91精品亚洲| 久久只有精品| 久久精品在线| 国内激情久久| 一区二区三区四区日本视频| 欧美 日韩 国产一区二区在线视频| 精品中文字幕一区二区三区四区| 欧美日韩亚洲一区三区| 亚洲精品美女| 亚洲精品影视| 日本精品国产| 日本99精品| 国产日韩欧美一区| 国产精品www.| 久久久国产精品网站| 国产h片在线观看| 国产一区二区色噜噜| 黑丝一区二区三区| 久久国内精品视频| 国产成人免费av一区二区午夜| 日韩精品免费一区二区三区| 亚洲免费精品| 五月激激激综合网色播| 精品视频在线你懂得| 99pao成人国产永久免费视频| 日韩中文av| 亚洲一级二级| 国产精品久久久久9999高清| 亚洲欧美久久| 伊伊综合在线| 日韩精品一区二区三区免费观影| 欧美亚洲自偷自偷| 久久在线免费| 欧美好骚综合网| 日韩中文字幕不卡| 色婷婷综合网| 国产精品丝袜在线播放| 福利欧美精品在线| 欧美一区激情| 麻豆久久精品| 日韩激情综合| 久久麻豆精品| 啪啪亚洲精品| 欧美日韩一视频区二区| 欧美亚洲国产激情| 免费高清在线一区| 国产一区二区三区黄网站| 日韩av一级片| 精品久久久久久久| 欧美一区二区三区高清视频 |