国产探花免费观看_亚洲丰满少妇自慰呻吟_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;    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 花莲县| 翁源县| 呼伦贝尔市| 玉林市| 汝州市| 东乡族自治县| 佳木斯市| 京山县| 石城县| 富民县| 乌拉特后旗| 迭部县| 高台县| 阜新市| 宁波市| 龙岩市| 察隅县| 亚东县| 湘潭市| 渑池县| 白城市| 水城县| 农安县| 福贡县| 奉化市| 岑溪市| 容城县| 兴和县| 横山县| 湟中县| 周至县| 五原县| 鄂托克前旗| 原阳县| 年辖:市辖区| 衡水市| 常山县| 格尔木市| 富民县| 望谟县| 湘潭县|