安卓开发之通过手势实现图像拖拽功能

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

开发之通过手势实现图像拖拽功能-jquery实现拖拽功能"> 

 

 代码如下 复制代码

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);
        }
    }

 

时间: 2024-09-27 23:44:18

安卓开发之通过手势实现图像拖拽功能的相关文章

Bootstrap模态框水平垂直居中与增加拖拽功能_javascript技巧

最近开发一个CMS系统使用上了Bootstrap,在开发一个添加某些选项时,打算弹出一个模态框,但是发现,模态框不会垂直居中到屏幕上,而是在屏幕上方,找了好多资料都没搞定,最终自己试出了一种JS的方法,同时还需要Bootstrap模态框可以拖动,但是发现默认的也不行,翻遍了网络找了出来.现在分享给大家: 原文地址:http://www.panshy.com/articles/201509/webdev-2524.html 以下为Bootstrap模态框拖拽功能的增加方法 $("#myModal&

RecyclerView实现滑动删除和拖拽功能

前言 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下RecyclerView轻松实现滑动删除及拖拽的效果,如下图. 相信研究过RecyclerView的同学,应该很清楚该怎么实现这样的效果,若是用ListView,这样的效果实现起来可能就有点麻烦,但是在强大的RecyclerView面前这样的的效果只需很少的代码,因为谷歌给我们提供了强大的工具类ItemTouchH

使用jQuery UI的draggable和droppable完成拖拽功能--介绍

第一部分--拖拽介绍 在https://code.csdn.net/2013ossurvey中 最后一个开源项目就是zTree,一方面是因为自己看到有项目中使用了zTree,而已大家表示还不错.另外一方面,自己需要实现一个zTree不支持的 复杂逻辑的拖拽功能.总体来说,我要实现的是一个可以拖拽的树形列表.当然最新版zTree也支持多课树之间的数据交互.当然一般的企业开发或者web开 发中,使用到2个或3个数就足够了.太多了树形结构对于用户来说,也非常复杂.个人推荐不是非常复杂的需求都可以考虑使

升级版“one step”?谷歌将带来全新 Android 拖拽功能

你有没有计算过在智能手机中将内容从一个地方移动或复制到另一个地方实际需要多长时间? 据悉,按默认文件管理器计算,将文件从 SD 卡移动到手机内存或反向操作,需要至少 8 步.从一个应用复制文本到另一个应用需要20秒. 为了解决这些耗时的尴尬问题,Google 为 Android 操作系统带来了一个很棒的功能:拖放应用. Google 最新专利显示其将带来全新的拖拽功能,功能将支持文本,图像,视频文件和任何可编辑的内容.每当你选择并开始拖动对象时,都将显示可接受此类内容的合适应用程序,手机将使用机

JQuery UI的拖拽功能实现方法小结_jquery

JQuery UI提供的API极大简化了拖拽功能的开发.只需要分别在拖拽源(source)和目标(target)上调用draggable和droppable两个函数即可. 拖拽原理 首先要明确几个概念. ource:拖拽源,要拖动的元素. taerget:拖放目标,能够放入source的容器. 拖拽的动作分解如下: 1. drag start:在拖拽源(source)上按下鼠标并开始移动 2. drag move: 移动过程中 3. drag enter: 移动进入目标(target)容器 4.

Android中RecyclerView实现滑动删除与拖拽功能

前言 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下RecyclerView轻松实现滑动删除及拖拽的效果. 如下图. 相信研究过RecyclerView的同学,应该很清楚该怎么实现这样的效果,若是用ListView,这样的效果实现起来可能就有点麻烦,但是在强大的RecyclerView面前这样的的效果只需很少的代码,因为谷歌给我们提供了强大的工具类ItemTouch

js实现简单div拖拽功能实例

  本文实例讲述了js实现简单div拖拽功能的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 <!DOCTYPE HTML PUBLIC "-

Extjs4中tree的拖拽功能简单实例

这篇文章主要介绍了Extjs4中tree的拖拽功能简单实例,有需要的朋友可以参考一下 代码如下: //只要要在treepanel中配置一下viewConfig即可,如果是两棵树之间,两棵树都要配置     viewConfig:{    plugins :{     ptype:'treeviewdragdrop',     appendOnly:true   //只能拖着带非叶节点上    },    listeners:{//监听器     drop:function(node,data,o

大神帮帮忙-类似于360浏览器首页的链接拖拽功能

问题描述 类似于360浏览器首页的链接拖拽功能 如何实现拖拽链接时候不打开链接,当单机链接时候再打开此链接.就和360浏览器首页的那个效果一样. 解决方案 原本拖拽就不是打开链接,除非拖动到浏览器地址栏,360拖动到地址栏照样打开的..不明白你要问什么..