Android控件拖拽功能的实现

来源:互联网 发布:高尔夫网络电视直播 编辑:程序博客网 时间:2024/05/15 21:48

下面是一个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;    }}
效果图如下:



0 0
原创粉丝点击