Android拖动控件改变其位置
来源:互联网 发布:帝国cms怎么调用tags 编辑:程序博客网 时间:2024/06/04 18:37
mainActivity如下:
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;//移动后控件的坐标left=(int)(view.getLeft()+distanceX);top=(int)(view.getTop()+distanceY);right=(int)(view.getRight()+distanceX);bottom=(int)(view.getBottom()+distanceY);//处理拖出屏幕的情况if (left<0) {left=0;right=view.getWidth();}if (right>screenWidth) {right=screenWidth;left=screenWidth-view.getWidth();}if (top<0) {top=0;bottom=view.getHeight();}if (bottom>screenHeight) {bottom=screenHeight;top=screenHeight-view.getHeight();}//显示图片view.layout(left, top, right, bottom);lastX=event.getRawX();lastY=event.getRawY();break;//抬起case MotionEvent.ACTION_UP:break;default:break;}return false;}}
main.xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" > <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:clickable="true" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="please drag" android:clickable="true" /></LinearLayout>
- Android拖动控件改变其位置
- Android拖动控件改变其位置
- Android拖动改变小球位置
- 鼠标拖动Panel控件,鼠标拖动改变位置
- android listview拖拽,拖动item 改变位置
- android listview拖拽,拖动item 改变位置
- Winform鼠标拖动改变控件大小、移动控件位置
- C#鼠标拖动控件改变位置并绘制虚框
- C#鼠标拖动控件改变位置并绘制虚框
- C#鼠标拖动控件改变位置并绘制虚框
- Android:图片中叠加文字,支持拖动改变位置
- android 动态改变控件位置和大小
- android 动态改变控件位置和大小
- android 动态改变控件位置和大小
- Android动态改变控件的位置
- android控件跟随手势滑动改变位置
- 在运行时通过鼠标拖动移动控件位置及改变控件的大小
- 在运行时通过鼠标拖动移动控件位置及改变控件的大小
- 65000个有效连接的IOCP封装类
- 转换时间格式 及 列表综合
- 特征值和特征向量的求取方法
- TI C6000系列DSP之存储器模式
- NGUI官网示例9 – QuestLog(可展开元件)
- Android拖动控件改变其位置
- MySQL中进行树状所有子节点的查询 . mysql根据父id 查询所有的子id
- LOG4CXX
- MySQL插入时间戳用函数:UNIX_TIMESTAMP()
- BOOST::Regex
- UIButton
- 综合交易系统 第一次运行
- launcher4.0加载
- jquery自定义函数之extend