网站地图    收藏   

主页 > 前端 > css教程 >

图片拖动功能实现 - html/css语言栏目:html.css - 自

来源:自学PHP网    时间:2015-04-14 14:51 作者: 阅读:

[导读] XML文件Java代码?xml version=1.0 encoding=utf-8?LinearLayout xmlns:android=http://schemas.android.com/apk/res/android android:orientation=vertical android:layout_width=fill_parent......

XML文件
 
Java代码 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<ImageView   
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:scaleType="matrix" 
    android:id="@+id/imageView" 
    android:src="@drawable/hd3" 
    /> 
</LinearLayout> 
 
主页面:MainActivity.java
 
Java代码 
package com.xiawenquan; 
 
import android.app.Activity; 
import android.graphics.Matrix; 
import android.graphics.PointF; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.ImageView; 
 
public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    private ImageView imageView; 
    private PointF startPoint = null; 
    private Matrix matrix = null; 
    private Matrix currMatrix ; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        startPoint = new PointF();  
        matrix = new Matrix(); // 用于拖拉变换 
        currMatrix = new Matrix(); // 用于拖拉变换 
         
         
        imageView = (ImageView) findViewById(R.id.imageView); 
        imageView.setOnTouchListener(new View.OnTouchListener() { 
             
            @Override 
            public boolean onTouch(View view, MotionEvent event) { 
                switch (event.getAction() & MotionEvent.ACTION_MASK) { 
                case MotionEvent.ACTION_DOWN://只有一个手指按下屏幕时触发的事件 
                    currMatrix.set(matrix); // 保存上一次的移动点 
                    startPoint.set(event.getX(),event.getY());//移动前,手指按下的位置 
                     
                     
                    break; 
                case MotionEvent.ACTION_MOVE://手指在屏幕移动时触发的事件,该事件在移动过程不断被触发 
                    float mX = event.getX() - startPoint.x; // 移动点的X坐标 
                    float mY = event.getY() - startPoint.y;// 移动点的Y坐标 
                    matrix.set(currMatrix); // 保存当前变换的点 
                    matrix.postTranslate(mX, mY); // 移动到指定的点 
                     
                     
                     
                     
                    break; 
                     
                case MotionEvent.ACTION_POINTER_DOWN://如果已经有一个手指按下屏幕,后续再有手指按下屏幕,就会触发这个事件 
                     
                    break; 
                     
                case MotionEvent.ACTION_UP://最后一个手指离开屏幕后触发的事件 
                     
                    break; 
                case MotionEvent.ACTION_POINTER_UP://有一个手指离开了屏幕,但还有手指在屏幕上,此时会触发该事件 
                     
                    break; 
 
                default: 
                    break; 
                } 
                 
                imageView.setImageMatrix(matrix); // imageView在移动 
                return true; 
            } 
        }); 
    } 

作者“1002878825-qq-com”
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论