android 实现图标 (图片)拖拽移动
2017-04-25 17:37
411 查看
Android实现让图片在屏幕上任意移动
仅供参考,具体如下:
布局文件
效果图
仅供参考,具体如下:
package com.example.mytt; import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; public class TestMoveImageActivity extends Activity { private int screenWidth; private int screenHeight; private ImageView moveIv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_text_image_move); DisplayMetrics dm = getResources().getDisplayMetrics(); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels - 50; moveIv = (ImageView) findViewById(R.id.move_iv); moveIv.setOnTouchListener(movingEventListener); moveIv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 点击事件 } }); } private OnTouchListener movingEventListener = new OnTouchListener() { int lastX, lastY, x, y; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); x = (int) event.getRawX(); y = (int) event.getRawY(); break; case MotionEvent.ACTION_MOVE: int dx = (int) event.getRawX() - lastX; int dy = (int) event.getRawY() - lastY; int left = v.getLeft() + dx; int top = v.getTop() + dy; int right = v.getRight() + dx; int bottom = v.getBottom() + dy; // 设置不能出界 if (left < 0) { left = 0; right = left + v.getWidth(); } if (right > screenWidth) { right = screenWidth; left = right - v.getWidth(); } if (top < 0) { top = 0; bottom = top + v.getHeight(); } if (bottom > screenHeight) { bottom = screenHeight; top = bottom - v.getHeight(); } v.layout(left, top, right, bottom); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_UP: //检测移动的距离,如果很微小可以认为是点击事件 if (Math.abs(event.getRawX() - x) < 10 && Math.abs(event.getRawY() - y) < 10) { try { Field field = View.class.getDeclaredField("mListenerInfo"); field.setAccessible(true); Object object = field.get(v); field = object.getClass().getDeclaredField("mOnClickListener"); field.setAccessible(true); object = field.get(object); if (object != null && object instanceof View.OnClickListener) { ((View.OnClickListener) object).onClick(v); } } catch (Exception e) { } } break; } return true; } }; }
布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#eeeeee" android:orientation="vertical" > <ImageView android:id="@+id/move_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/bg_liveshow_box" /> </RelativeLayout>
效果图
相关文章推荐
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- Android实现让图片在屏幕上任意移动的方法(拖拽功能)
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- Android自定义View实现图片显示,并实现缩放、拖拽、切换功能
- Android:利用Matrix,实现双手指缩放图片与拖拽图片功能
- android滑动一个路线后 人物图片按此路线移动的实现
- Android应用开发之实现图片的拖拽显示
- [Android] 触屏setOnTouchListener实现图片缩放、移动、绘制和添加水印
- Android多点触摸实现缩放和拖拽图片
- android滑动一个路线后 人物图片按此路线移动的实现
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- 实现Android图片预览的拖拽缩放
- android实现手势缩放、移动图片
- android开发获取网络图片并可拖拽移动
- Android zip文件中读取图片实现Gallery放大缩小,移动,图片弹回等特效。
- Android通过手势实现图片按照指定路径移动
- Android中实现图片的拖拽显示
- android 大图片拖拽并缩放实现原理