android开发之单点触摸

相对于多点触摸,单点触摸还是很简单的。

新建一个工程,先看看布局文件:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.touchevent.MainActivity" >

    <ImageView
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/jiafeimao"
        android:scaleType="matrix" />

</RelativeLayout>

就一个简单的ImageView,一会我们将在Activity中移动这个ImageView:

public class MainActivity extends Activity {

    private ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) this.findViewById(R.id.iv);
        iv.setOnTouchListener(new OnTouchListener() {
            private float x;
            private float y;
            // 用来操作图片的模型
            private Matrix oldMatrix = new Matrix();
            private Matrix newMatrix = new Matrix();

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) { // 判断操作类型
                case MotionEvent.ACTION_DOWN:
                    //按下时记住x,y的坐标
                    x = event.getX();
                    y = event.getY();
                    oldMatrix.set(iv.getImageMatrix());
                    break;
                case MotionEvent.ACTION_MOVE://移动时
                    //用另一个模型记住按下时的位置
                    newMatrix.set(oldMatrix);
                    //移动模型
                    newMatrix.setTranslate(event.getX()-x, event.getY()-y);
                    break;
                }
                //把图片放入移动后的模型中
                iv.setImageMatrix(newMatrix);
                return true;
            }
        });
    }
}

就是这么简单。

完整代码下载

时间: 2024-12-14 07:40:52

android开发之单点触摸的相关文章

Cocos2d-x开发实例:单点触摸事件

下面我们通过一个实例详细了解一下,层中单点触摸事件的实现过程.感受一下它的缺点和优点.该实例场景如下图所示,场景中有两个方块精灵,我们可以点击和移动它们. 下面我们看看HelloWorldScene.cpp具体的实现代码如下: [html] view plaincopy bool HelloWorld::init() { if( !Layer::init() ) { returnfalse; } ...... setTouchEnabled(true); //设置为单点触摸 setTouchMo

quick-cocos2d-x游戏开发【9】——单点触摸

quick的触摸机制,我想廖大已经在这篇文章里说的很清楚了,我们这些小辈们就是在他的基础上完备一下,说说用法就可以了,嘿嘿. 在2.2.3之前的版本(不包括2.2.3),触摸机制和廖大在那篇文章里面的说的一样,添加触摸响应采用addTouchEventListener来完成,不过在此之后,对触摸机制就进行了完全的改写,和cocos2dx 3.0的版本一样,采用更加灵活的CCNode事件分发机制. 如果你对cocos 3.0中触摸机制很了解,那么quick的触摸使用起来也很方便.直接来看怎么用.

Android开发之常用开源库直接拿来用

1.from  代码家 整理比较好的源码连接 *************************************************************************************************************************************************************************** http://blog.zhan-dui.com/?page_id=60 感谢 "代码家"整理 一.

麦子android开发教程:Android开发框架详解

在麦子学院里有很多初学android开发的同学都在问安卓的开发框架问题,下面跟着麦子学院的android老师来看看相关的代码: Java代码 1.   publicclass App extends Activity { 2. 3.       public App () {//构造函数不用说了 4.      } 5. 6.       public void onCreate(Bundle savedInstanceState) {//界面初始化的时候调用 7.          super

android权限--android开发中的权限及含义(上)

android权限--android开发中的权限及含义(上) android.permission.EXPAND_STATUS_BAR 允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST 作为一个工厂测试程序,运行在root用户 android.permission.FLASHLIGHT 访问闪光灯,android开发网提示HTC Dream不包含闪光灯 android.pe

Android 控件的触摸事件传递与处理

了解Android控件的触摸事件传递与处理对我们日常开发中自定义控件和触摸事件冲突解决有重大意义.Android控件的触摸事件传递和处理主要有以下几个方法,下面一一介绍. 一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev);                                                                                               接收到触摸事件时,是否

Cocos2d-x实例:单点触摸事件

addChild(boxC,30, kBoxC_Tag);                                                                                         ⑥ returntrue; } 我们在HelloWorld::init()函数中初始化了场景中的背景和三个方块精灵.代码第①~④行是创建并添加背景,图8-3所示的背景是由一个128x128纹理图片(BackgroundTile.png)反复贴图上,这样可以减少内存

android开发要点

[1]Activity的生命周期 Activity作为android系统的表现层组件有着至关重要的地位,因为他直接和用户接触.一个Activity在被创建和销毁的过程中经历了7个过程,他们分别是oncreat(activity创建后第一个被调用的函数),onstart(当activity显示在界面上的时候被调用),onrestart(从停止到活动调用),onresume(能够和用户进行交互的时候调用),onpause(进入暂停态的时候被调用),onstop(进入停止态的时候被调用),ondest

android开发教程:android手势翻页效果

听麦子学院android开发老师说要实现手势翻页效果,主要用到ViewFlipper和GestureDetector.  ViewFlipper变化当前显示内容,GestureDetector监听手势.  用于多页的展示非常酷.  现在我就给大家简单说明下,  首先创建工程:TestFlip,创建主Activity:TestFlip.  在res/layout/main.xml中添加flipper信息,如下:  Java代码   1. <?xml version="1.0" en