欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android基础知识之单点触摸

程序员文章站 2024-03-02 14:58:34
相对于多点触摸,单点触摸还是很简单的。 新建一个工程,先看看布局文件:

相对于多点触摸,单点触摸还是很简单的。
新建一个工程,先看看布局文件:

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

就是这么简单。

原文链接:

源码下载:单点触摸

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。