博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android通过手势实现图像拖拽功能
阅读量:6803 次
发布时间:2019-06-26

本文共 1792 字,大约阅读时间需要 5 分钟。

本示例实现Android通过手势可以实现图像的拖拽功能。运行效果如下:

 

 

代码如下:

package com.android.drag;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
/**
 * Android通过手势实现图像拖拽功能
 * 
@author
 Administrator
 *
 
*/
public 
class DragActivity 
extends Activity {
    
/**
 Called when the activity is first created. 
*/
    @Override
    
public 
void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
//
 setContentView(R.layout.main);
        View view = 
new ImageDragView(
this);
        
        setContentView(view);
    }
    
class ImageDragView 
extends View {
        
private 
float x1;
        
private 
float y1;
        
private 
float x2;
        
private 
float y2;
        
public ImageDragView(Context context) {
            
super(context);
            
//
 TODO Auto-generated constructor stub
        }
        @Override
        
public 
boolean onTouchEvent(MotionEvent event) {
            
//
 TODO Auto-generated method stub
            
float size = event.getSize();
            
int szi = (
int) size;
            
int dxi = szi >> 12;
            
int dyit = ((1 << 12) - 1);
            
int dyi = szi & dyit;
            DisplayMetrics metrics = getResources().getDisplayMetrics();
            
            
float dx = metrics.widthPixels * dxi / (
float) dyit;
            
float dy = metrics.heightPixels * dyi / (
float) dyit;
            x1 = event.getX();
            y1 = event.getY();
            x2 = x1 + dx;
            y2 = y1 + dy;
            invalidate();
            
return 
true;
        }
        @Override
        
protected 
void onDraw(Canvas canvas) {
            
//
 TODO Auto-generated method stub
            
super.onDraw(canvas);
            
float r = (
float) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2)
                    * (y1 - y2)) / 2;
            r = 100 >= r ? 100 : r;
            Paint paint = 
new Paint();
            paint.setColor(Color.RED);
            canvas.drawCircle(x1, y1, r, paint);
        }
    }

}  

最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址: 谢谢。

 

完毕。^_^ 

 

转载于:https://www.cnblogs.com/hanyonglu/archive/2012/02/13/2348553.html

你可能感兴趣的文章
六周第一次课 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下
查看>>
我的友情链接
查看>>
华为 ACL 问题
查看>>
RHEL设置主机名
查看>>
Java原始的压缩和解压
查看>>
ORACLE系统表和视图说明
查看>>
你在为谁工作
查看>>
5、MySQL多表查询
查看>>
GZIPInputstream解决乱码问题
查看>>
阿里云不能启动docker
查看>>
安装LVS
查看>>
C++入门篇05
查看>>
amoeba搭建及读写分离测试
查看>>
linux系统结构
查看>>
谷歌从Android市场中剔除恶意短信***
查看>>
RH124 第三单元 在图形环境中获取帮助
查看>>
Android第二十三期 - 256k的ListView下拉刷新和滚动加载数据
查看>>
技术团队的打造
查看>>
Juniper NetScreen常见问题汇总
查看>>
arcgis portal使用问题及解决方法
查看>>