国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android通過ImageView設置手指滑動控件縮放

2019-10-22 18:20:09
字體:
來源:轉載
供稿:網友

 ImageView設置手指滑動縮放效果,具體實現步驟大家通過本文學習下吧!

實現步驟

1, imageview設置scaletype為 android/85233.html">android:scaleType=”matrix”

2, 設置imageview的setOnTouchListener,重寫里面的代碼

3, 新建一個matrix,

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

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

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

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

代碼

自定義控件的代碼,主要是重寫的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();}@Overridepublic 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;}/** * 獲取兩個點的中心點坐標 * @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.MyImageViewandroid: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" />

總結

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永春县| 浮山县| 富阳市| 霍邱县| 乌鲁木齐县| 进贤县| 商城县| 广州市| 铁岭市| 江陵县| 江口县| 宜君县| 白沙| 图木舒克市| 顺义区| 彩票| 石棉县| 临澧县| 佳木斯市| 贵溪市| 吴江市| 海伦市| 厦门市| 加查县| 永和县| 伊春市| 永兴县| 湘潭市| 绵阳市| 临夏县| 榆中县| 青河县| 静宁县| 中宁县| 尼木县| 鄱阳县| 青铜峡市| 阜新| 海林市| 司法| 宜川县|