转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/51179151
本文出自【吴孝城的CSDN博客】

Android点击触控事件

Android触控_第1张图片

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><FrameLayout 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:id="@+id/fl"    tools:context="cn.wuxiaocheng.multitouch.MainActivity">    <ImageView        android:id="@+id/img"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@mipmap/ic_launcher" /></FrameLayout>
MainActivity.java

package cn.wuxiaocheng.multitouch;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.FrameLayout;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    private FrameLayout root;    private ImageView img;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        root = (FrameLayout) findViewById(R.id.fl);        img = (ImageView) findViewById(R.id.img);        root.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View view, MotionEvent motionEvent) {                switch (motionEvent.getAction()){                    case MotionEvent.ACTION_DOWN:                        Log.d("MotionEvent", "按下");                        break;                    case MotionEvent.ACTION_MOVE:                        Log.d("MotionEvent", "移动");                        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) img.getLayoutParams();                         lp.leftMargin = (int) motionEvent.getX();                        lp.topMargin = (int) motionEvent.getY();                        img.setLayoutParams(lp);                        break;                    case MotionEvent.ACTION_UP:                        Log.d("MotionEvent", "松开");                        break;                }                //要返回true,不然                return true;            }        });    }}
Android触控_第2张图片

放大缩小

package cn.wuxiaocheng.multitouch;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.FrameLayout;public class MainActivity extends AppCompatActivity {    private FrameLayout root;    private float currentDistance;//当前距离    private float lastDistance = -1;//最终距离    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        root = (FrameLayout) findViewById(R.id.fl);        root.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View view, MotionEvent motionEvent) {                switch (motionEvent.getAction()) {                    case MotionEvent.ACTION_DOWN:                        System.out.println("ffffffffffffff");                        break;                    case MotionEvent.ACTION_MOVE:                        Log.d("MotionEvent", "移动");                        //当至少有两个触摸点时                        if (motionEvent.getPointerCount() >= 2) {                            float offSetX = motionEvent.getX(0) - motionEvent.getX(1);                            float offSetY = motionEvent.getY(0) - motionEvent.getY(1);                            //先算X轴的平方,再算Y轴的平方,然后开平方,得到两点的距离                            currentDistance = (float) Math.sqrt(offSetX * offSetX + offSetY * offSetY);                            if (lastDistance < 0) {                                lastDistance = currentDistance;                            } else {                                //放大或缩小的像素大于5个像素时                                if (currentDistance - lastDistance > 5) {                                    Log.d("触摸", "放大");                                    lastDistance = currentDistance;                                } else if (lastDistance - currentDistance > 5) {                                    Log.d("触摸", "缩小");                                    lastDistance = currentDistance;                                }                            }                        }                        break;                    case MotionEvent.ACTION_UP:                        Log.d("MotionEvent", "松开");                        break;                }                //要返回true,不然                return true;            }        });    }}

图片放大缩小

package cn.wuxiaocheng.multitouch;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.FrameLayout;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    private FrameLayout root;    private ImageView img;    private float currentDistance;//当前距离    private float lastDistance = -1;//最终距离    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        root = (FrameLayout) findViewById(R.id.fl);        img = (ImageView) findViewById(R.id.img);        root.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View view, MotionEvent motionEvent) {                switch (motionEvent.getAction()) {                    case MotionEvent.ACTION_DOWN:                        System.out.println("ffffffffffffff");                        break;                    case MotionEvent.ACTION_MOVE:                        Log.d("MotionEvent", "移动");                        //当至少有两个触摸点时                        if (motionEvent.getPointerCount() >= 2) {                            float offSetX = motionEvent.getX(0) - motionEvent.getX(1);                            float offSetY = motionEvent.getY(0) - motionEvent.getY(1);                            //先算X轴的平方,再算Y轴的平方,然后开平方,得到两点的距离                            currentDistance = (float) Math.sqrt(offSetX * offSetX + offSetY * offSetY);                            if (lastDistance < 0) {                                lastDistance = currentDistance;                            } else {                                //放大或缩小的像素大于5个像素时                                if (currentDistance - lastDistance > 5) {                                    FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) img.getLayoutParams();                                    lp.width = (int) (1.1 * img.getWidth());                                    lp.height = (int) (1.1 * img.getHeight());                                    img.setLayoutParams(lp);                                    lastDistance = currentDistance;                                } else if (lastDistance - currentDistance > 5) {                                    FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) img.getLayoutParams();                                    lp.width = (int) (0.9 * img.getWidth());                                    lp.height = (int) (0.9 * img.getHeight());                                    img.setLayoutParams(lp);                                    lastDistance = currentDistance;                                }                            }                        }                        break;                    case MotionEvent.ACTION_UP:                        Log.d("MotionEvent", "松开");                        break;                }                //要返回true,不然                return true;            }        });    }}


Android触控_第3张图片
Android触控_第4张图片



更多相关文章

  1. 通话距离感应实现源码
  2. Android for opencv(1)android使用opencv基本操作:读写 图片,操作像
  3. Android:解决RadioGroup中RadioButton的图片自定义及每项间隔距离
  4. android线性布局控件之间的距离设置
  5. C#如何计算传入的时间距离今天的时间差的实例分享
  6. C#通过KD树进行距离最近点的查找的实例分析
  7. 盘一盘机器学习中的那些距离
  8. PHP实例计算经纬坐标间的距离
  9. jquery判断滚动条距离顶部的距离

随机推荐

  1. Android性能测试 一些适用于Android Stud
  2. Android开发人暗讽阿里:抄得不到位 不懂
  3. Android中的签名验证(1)
  4. Android实现pppoe拨号上网(二)具体步骤
  5. 作为Android开发者 你真的知道Android按
  6. android kernel控制台初始化过程
  7. Android下实现非启动界面Wifi连接
  8. 【转】Android(安卓)分析内存的使用情况
  9. 基于Android的校园跳蚤市场(二手)的设计与
  10. Android核心分析28篇,强烈推荐android初学