欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android通過ImageView設(shè)置手指滑動控件縮放

 更新時間:2017年12月15日 15:03:55   作者:ymeddmn  
這篇文章主要介紹了Android通過ImageView設(shè)置手指滑動控件縮放效果,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

 ImageView設(shè)置手指滑動縮放效果,具體實現(xiàn)步驟大家通過本文學(xué)習(xí)下吧!

實現(xiàn)步驟

1, imageview設(shè)置scaletype為 android:scaleType=”matrix”

2, 設(shè)置imageview的setOnTouchListener,重寫里面的代碼

3, 新建一個matrix,

matrix.postScale(scale,scale,縮放中心,縮放中心); 
image.setImageMatrix(matrix);

這樣image的大小就會改變了.

需要注意的幾點是 imageview一定要設(shè)置scaletype為matrix,否則圖片不能進(jìn)行縮放.而且Bitmap也可以通過Matrix改變大小.

也可以用自定義控件imageview,重寫里面的onTouchEvent,本文就是用的自定義控件得到方式實現(xiàn)的.

代碼

自定義控件的代碼,主要是重寫的onTouchEvent的代碼

package com.test.administrator.imageviewscale;

import android.content.Context;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.renderscript.Float2;
import android.renderscript.Float4;
import android.util.AttributeSet;
import android.util.FloatMath;
import android.view.MotionEvent;
import android.widget.ImageView;
/**
 * Created by Administrator on 2016/3/21.
 */
public class MyImageView extends ImageView {
private PointF centerPoint;
private float firstdistance;
private Matrix matrix;
public MyImageView(Context context) {
super(context);
initParams();
}
private void initParams() {
matrix = new Matrix();
setImageMatrix(matrix);
}
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
initParams();
}
public MyImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initParams();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int count = event.getPointerCount();
if(count == 1){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("actiondown 1----");
break;
case MotionEvent.ACTION_MOVE:
System.out.println("actionmove 1----");
break;
case MotionEvent.ACTION_UP:
System.out.println("actionup 1----");
break;
default:
break;
}
}else if(count == 2){
switch (event.getAction()&MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_POINTER_DOWN:
 firstdistance = getDistance(event);
centerPoint = getCenterPoint(event);
System.out.println("actiondown 2===");
break;
case MotionEvent.ACTION_MOVE:
float distance = getDistance(event);
float scale = distance / firstdistance;
matrix.postScale(scale,scale,centerPoint.x,centerPoint.y);
setImageMatrix(matrix);
System.out.println(scale + "====");
firstdistance = distance;
System.out.println("actionmove 2===");
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
}
return true;
}
/**
 * 獲取兩個點的中心點坐標(biāo)
 * @param event
 */
private PointF getCenterPoint(MotionEvent event) {
PointF point = new PointF();
point.x = (event.getX()+event.getX(1))/2;
point.y = (event.getY()+event.getY(1))/2;
return point;
}
/**
 * 兩根手指時手指間的距離
 * @param event
 */
private float getDistance(MotionEvent event) {
float x1 = event.getX();
float y1 = event.getY();
float x2 = event.getX(1);
float y2 = event.getY(1);
float distance = (float) Math.sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1- y2));
return distance;
}
}

imageview的代碼

<com.test.administrator.imageviewscale.MyImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true"
android:scaleType="matrix"
  android:src="@drawable/qq" />

總結(jié)

以上所述是小編給大家介紹的Android通過ImageView設(shè)置手指滑動控件縮放,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論