Android拖动控件改变其位置
16lz
2021-01-23
Android拖动控件改变其位置
原创 2012年12月26日 17:54:25mainActivity如下:
[java] view plain copy- package cn.dragtest;
- import android.app.Activity;
- import android.graphics.Rect;
- import android.os.Bundle;
- import android.util.DisplayMetrics;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnTouchListener;
- import android.view.Window;
- import android.widget.Button;
- import android.widget.ImageView;
- public class MainActivity extends Activity implements OnTouchListener{
- private Button mButton;
- private ImageView mImageView;
- private DisplayMetrics displayMetrics;
- private float lastX=0;
- private float lastY=0;
- private int screenWidth=0;
- private int screenHeight=0;
- private int left;
- private int top;
- private int right;
- private int bottom;
- private boolean isFirst=true;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- initView();
- }
- private void initView() {
- mButton=(Button) findViewById(R.id.button);
- mImageView=(ImageView) findViewById(R.id.imageView);
- mButton.setOnTouchListener(this);
- mImageView.setOnTouchListener(this);
- }
- public boolean onTouch(View view, MotionEvent event) {
- if (isFirst) {
- // 得到屏幕的宽
- displayMetrics = getResources().getDisplayMetrics();
- screenWidth = displayMetrics.widthPixels;
- // 得到标题栏和状态栏的高度
- Rect rect = new Rect();
- Window window = getWindow();
- mImageView.getWindowVisibleDisplayFrame(rect);
- int statusBarHeight = rect.top;
- int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
- int titleBarHeight = contentViewTop - statusBarHeight;
- // 得到屏幕的高
- screenHeight = displayMetrics.heightPixels- (statusBarHeight + titleBarHeight);
- isFirst=false;
- }
- int action=event.getAction();
- switch (action) {
- //按下
- case MotionEvent.ACTION_DOWN:
- //按下处坐标
- lastX=event.getRawX();
- lastY=event.getRawY();
- break;
- //移动
- case MotionEvent.ACTION_MOVE:
- //移动的距离
- float distanceX=event.getRawX()-lastX;
- float distanceY=event.getRawY()-lastY;
- //移动后控件的坐标
-
更多相关文章
- android 开启自动旋转屏幕
- android 点亮屏幕和屏幕解锁
- Android P 手机厂商(华为、Oppo,Vivo)屏幕适配实现记录
- android 遍历所有控件
- Android获取屏幕相关属性ScreenUtil
- Android学习--动态向SPinner控件中添加数据
- android 屏幕方向随传感器变化,并带有切换大屏,小屏和锁定屏幕方向
随机推荐