Android控件拖拽功能的实现
16lz
2021-01-24
下面是一个Android拖拽功能的实现demo,以图片ImageView测试,当手指拖动图片时,图片会跟着手指的移动而移动
package com.example.dragtest;import android.app.Activity;import android.graphics.Rect;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.Window;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView imageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageview); imageView.setOnTouchListener(new OnTouchListener() { float raw_x, raw_y;public boolean onTouch(View v, MotionEvent event) {int action = event.getAction();switch(action){case MotionEvent.ACTION_MOVE://获取手指触摸的点在屏幕中的坐标raw_x = event.getRawX();raw_y = event.getRawY();//计算图片显示的上下左右坐标int l = (int) (raw_x - imageView.getWidth()/2);int t = (int) (raw_y - imageView.getHeight()/2);int r = (int) (raw_x + imageView.getWidth()/2);int b = (int) (raw_y + imageView.getHeight()/2);//计算状态栏和标题栏高度int statusbarHeight = getStatusBarHeight();int titleBarHeight = getTitleBarHeight();//显示图片时要减去状态栏和标题栏的高度int h = statusbarHeight + titleBarHeight;//显示图片到制定位置v.layout(l, t - h, r, b - h);break;}return true;}}); } //获取标题栏高度 private int getTitleBarHeight(){ int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); Log.d("yubo", "title bar height:" + (contentTop - getStatusBarHeight())); return contentTop - getStatusBarHeight(); } //获取状态栏高度 private int getStatusBarHeight(){ Rect rect = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); Log.d("yubo", "status bar height:" + rect.top); return rect.top; }}效果图如下:
更多相关文章
- tess_two Android图片文字识别
- 图片的使用
- android中图片加载到内存的实例代码
- Android(安卓)把图片进行压缩
- Android处理图片透明度并绘画图片
- android沉浸式全屏显示
- android 样式选择器
- SmartImageView初接触
- Android——网络编程(网络图片查看器)