android 实现图标 (图片)拖拽移动
来源:互联网 发布:加拿大 留学 专业 知乎 编辑:程序博客网 时间:2024/05/16 16:10
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>
效果图
0 0
- android 实现图标 (图片)拖拽移动
- Android箭头图标移动动画实现
- Android----线程实现图片移动
- 移动端实现 iphone android 小图标 文字排版
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- android实现手势缩放、移动图片
- android中实现图片的上下移动
- Android-图片预览(自定义ImageView实现图片缩放,多点触控,自由移动)
- Android 响应键盘移动图标
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- VC实现图片移动(动画效果)
- JavaScript实现图片移动
- 实现图片左右移动
- Qt实现图片移动
- 多线程实现图片移动
- Android移动图片
- Android通过手势实现图片按照指定路径移动
- poj 2251 Dungeon Master
- jsoncpp封装和解析字符串、数字、布尔值和数组
- 注解(Annotation)自定义注解入门
- 写Python爬虫的准备工作
- ASP.NET 判断是否是连续的数字(可重复,但必须是连续的数字)
- android 实现图标 (图片)拖拽移动
- mook 离港篇之 引用 与 const
- 自动无限轮播图,支持多种自定义效果
- 冒泡排序
- git命令
- 使用ngrok暴露端口到外网,并且提供域名访问应用
- 为spring-boot-admin配置spring security(用于控制访问)
- Java爬虫进阶-HtmlUnit使用解析
- CentOS虚拟机存储扩容