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

首頁 > 學院 > 開發設計 > 正文

多點觸控

2019-11-09 15:01:48
字體:
來源:轉載
供稿:網友
//字體的放大縮小package com.xiaoyu.multi_touch;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.TextView;import android.widget.Toast;/** * 1.類的用途: * 2.作者:段玉 * 3.時間:2017/2/10 11 * 4.郵箱:1239959892@QQ.com */public class ScaleTextview extends TextView {    //獲取兩個指頭之間的距離    PRivate double olddistance;    private float textSize;    public ScaleTextview(Context context) {        super(context);    }    public ScaleTextview(Context context, AttributeSet attrs) {        super(context, attrs);    }    public ScaleTextview(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getActionMasked()){            case MotionEvent.ACTION_POINTER_DOWN:            {                //獲取字體大小                if (textSize == 0){                    textSize = this.getTextSize();                    //吐司                    Toast.makeText(getContext(),textSize+"",Toast.LENGTH_SHORT).show();                }                //獲取兩指之間的距離                olddistance = getdistance(event);            }                break;            case MotionEvent.ACTION_MOVE:            {                //判斷當前有幾個手指                if (event.getPointerCount() >= 2){                    //獲取滑動時兩指之間的距離                    double distance = getdistance(event);                    //獲取按下時 和滑動時  兩指之間距離的比例                    Zoom(distance / olddistance);                    //重置下按下的距離                    olddistance = distance;                }            }                break;        }        return true;    }    /**     * 重新設置字體大小     * @param v     */    private void Zoom(double v) {        //對textview控件重新設置字體大小        textSize = (float) (textSize * v);        //重新設置textview        this.setTextSize(px2sp(getContext(),textSize));    }    /**     * 獲取兩指之間距離     * @param event     * @return     */    public double getdistance(MotionEvent event){        float x = event.getX(0);        float x1 = event.getX(1);        float y = event.getY(0);        float y1 = event.getY(1);        //根據勾股定理 取平方根        double sqrt = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));        return sqrt;    }    /**     * 將px值轉換為sp值,保證文字大小不變     * @param context     * @param pxValue     * @return     */    public int px2sp(Context context,float pxValue){        float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;        return (int) (pxValue / scaledDensity + 0.5f);    }}//簡單的xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <com.baway.multi_touch.ScaleTextview        android:gravity="center"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:textSize="30dp"        android:text="淺寶寶_筱玉"/></LinearLayout>//圖片的放大縮小
package com.xiaoyu.multi_touch;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/** * 1.類的用途: * 2.作者:段玉 * 3.時間:2017/2/10 14 * 4.郵箱:1239959892@qq.com */public class ScaleImageview extends View {    private Bitmap bitmap;    Matrix matrix = new Matrix();    private double olddistance;    public ScaleImageview(Context context) {        super(context);        init();    }    public ScaleImageview(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    private void init() {        bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.nuan_bao);    }    public ScaleImageview(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawBitmap(bitmap,matrix,null);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getActionMasked()){            case MotionEvent.ACTION_POINTER_DOWN:            {                //獲取兩指之間距離                olddistance = getdistance(event);            }                break;            case MotionEvent.ACTION_MOVE:            {                if (event.getPointerCount() >= 2){                    //獲取移動中兩指之間的距離                    double distance = getdistance(event);                    //獲取按下時 和滑動時  兩指之間距離的比例                    zoom((float) (distance / olddistance));                    olddistance = distance;                }            }                break;        }        return true;    }    /**     * 重新繪制圖片     * @param v     */    private void zoom(float v) {        //矩陣縮放        matrix.postScale(1.0f * v, 1.0f * v);        //重新繪制        postInvalidate();    }    //獲取兩指之間的距離    public double getdistance(MotionEvent event){        float x = event.getX(0);        float x1 = event.getX(1);        float y = event.getY(0);        float y1 = event.getY(1);        //取平方根        double sqrt = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));        return sqrt;    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邹城市| 扎兰屯市| 玉屏| 革吉县| 尼玛县| 静安区| 化州市| 肇源县| 东乌珠穆沁旗| 青神县| 玉门市| 弥勒县| 灵山县| 南澳县| 石家庄市| 大竹县| 陕西省| 萨迦县| 阿瓦提县| 武定县| 伊吾县| 朝阳区| 榆社县| 兴国县| 洛隆县| 张家界市| 温泉县| 拉萨市| 柯坪县| 论坛| 永州市| 荆州市| 陵川县| 广安市| 梨树县| 黄大仙区| 南康市| 凤城市| 大连市| 永嘉县| 泗水县|