亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android實現簽名功能

2019-11-09 18:05:07
字體:
來源:轉載
供稿:網友

android上的一個簽名功能,先上效果圖

SignActivity.java

package com.cool.hello.sign;import android.Manifest;import android.content.pm.PackageManager;import android.graphics.Bitmap;import android.os.Environment;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Toast;import com.cool.hello.R;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.OutputStream;import java.security.Permission;public class SignActivity extends AppCompatActivity {    PRivate TouchView mTouchView;    private Bitmap bitmap;    String imagePath;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sign);        initView();        File externalFilesDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);        imagePath = externalFilesDir.getAbsolutePath();    }    private void initView() {        mTouchView = (TouchView) findViewById(R.id.touchView);    }    ////////////////////////////////////////////////////////////////////////////    /////////////////////////event handler//////////////////////////////////////    /**     * 保存     * @param view     */    public void save(View view){        bitmap = mTouchView.getBitmap();        if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){            saveToSdCard();        }else {            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);        }    }    private void saveToSdCard() {        File file = new File(imagePath + File.separator + "sign.jpg");        try {            FileOutputStream fileOutputStream = new FileOutputStream(file);            bitmap.compress(Bitmap.CompressFormat.JPEG,70,fileOutputStream);            Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show();        } catch (FileNotFoundException e) {            e.printStackTrace();        }    }    /**     * 清空     * @param view     */    public void clear(View view){        mTouchView.clear();    }    /**     * 取消     * @param view     */    public void cancel(View view){        mTouchView.clear();        finish();    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        if(grantResults[0] == PackageManager.PERMISSION_GRANTED){            saveToSdCard();        }else {            Toast.makeText(this,"授權失敗",Toast.LENGTH_SHORT).show();        }    }    ////////////////////////////////////////////////////////////////////////////}activity_sign.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"    android:orientation="vertical">    <com.cool.hello.sign.TouchView        android:id="@+id/touchView"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="45dp"        android:orientation="horizontal">        <Button            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="save"            android:text="保存" />        <Button            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="clear"            android:text="清空" />        <Button            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="cancel"            android:text="取消" />    </LinearLayout></LinearLayout>TouchView.java

package com.cool.hello.sign;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PorterDuff;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/** * Created by cool on 2017/2/7. */public class TouchView extends View {    private int mWidth;//屏幕的寬    private int mHight;//屏幕的高    private Paint mPaint;    private Path mPath;    private Bitmap mBitmap;    private Canvas mCanvas;    public TouchView(Context context) {        this(context, null);    }    public TouchView(Context context, AttributeSet attrs) {        this(context, attrs, 0);    }    public TouchView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    }    private void init() {        mPaint = new Paint();        mPaint.setAntiAlias(true); // 去除鋸齒        mPaint.setStrokeWidth(5);        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setColor(Color.BLACK);        mPath = new Path();    }    @Override    protected void onDraw(Canvas canvas) {        canvas.drawBitmap(mBitmap,0,0,null);        canvas.drawPath(mPath,mPaint);    }    float startX;    float startY;    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                startX = event.getX();                startY = event.getY();                mPath.moveTo(startX,startY);                break;            case MotionEvent.ACTION_MOVE:                float currentX = event.getX();                float currentY = event.getY();                mPath.lineTo(currentX,currentY);                break;            case MotionEvent.ACTION_UP:                mCanvas.drawPath(mPath,mPaint);                break;        }        invalidate();        return true;    }    public Bitmap getBitmap(){        return mBitmap;    }    public void clear(){        if(mCanvas != null){            mPath.reset();            mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);            invalidate();        }    }    @Override    protected void onSizeChanged(int w, int h, int oldw, int oldh) {        super.onSizeChanged(w, h, oldw, oldh);        mWidth = w;        mHight = h;        mBitmap = Bitmap.createBitmap(mWidth, mHight, Bitmap.Config.ARGB_8888);        mCanvas = new Canvas(mBitmap);        mCanvas.drawColor(Color.WHITE);    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国产中文字幕| 欧美激情视频网址| 日韩高清av一区二区三区| 国产精品成人va在线观看| 91久久精品国产91久久| 日韩成人激情在线| 91精品国产综合久久久久久蜜臀| 亚洲激情中文字幕| 久久在线免费观看视频| 欧美激情第一页xxx| 欧美激情视频一区二区| 日韩暖暖在线视频| 欧美影院久久久| 亚洲精品国精品久久99热| 波霸ol色综合久久| 日韩在线观看成人| 在线视频中文亚洲| 第一福利永久视频精品| 亚洲电影天堂av| 亚洲欧美精品在线| 91精品国产综合久久久久久久久| 日韩极品精品视频免费观看| 午夜精品久久久久久99热软件| 成人国内精品久久久久一区| 国产一区二区日韩| 欧美亚洲日本黄色| 在线观看欧美日韩国产| 亚洲男人天堂2024| 欧美资源在线观看| 欧美巨大黑人极品精男| 欧美国产日韩一区二区三区| 国产精品久久久久久久午夜| 爽爽爽爽爽爽爽成人免费观看| 亚洲日本欧美中文幕| 欧美成人精品三级在线观看| 亚洲欧美中文日韩v在线观看| 黑丝美女久久久| 日韩av免费在线| 亚洲国产高清高潮精品美女| 亚洲欧洲一区二区三区在线观看| 一区二区国产精品视频| 永久免费精品影视网站| 欧美一级片一区| 欧美另类高清videos| 国产视频精品在线| 国产精品日韩专区| 亚洲精品国产欧美| 成人激情视频小说免费下载| 亚洲第一男人av| 91日本视频在线| 欧美日韩中国免费专区在线看| 久久久999成人| 欧美精品videosex极品1| 欧美激情亚洲另类| 亚洲a在线播放| 亚洲国产精彩中文乱码av在线播放| 欧美亚洲激情在线| 欧美噜噜久久久xxx| 青青久久av北条麻妃海外网| 国产一区二区三区在线观看网站| 亚洲最大的网站| 国产在线一区二区三区| 久久精品男人天堂| 欧美激情国产精品| 亚洲网站视频福利| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产成人+综合亚洲+天堂| 91国语精品自产拍在线观看性色| 日韩网站免费观看高清| 久久久国产视频91| 国产精品91免费在线| 热久久视久久精品18亚洲精品| 亚洲国产精品久久久久| 日韩精品视频在线观看免费| 欧美影院久久久| 91久久久久久久一区二区| 亚洲人成电影网站色| 精品中文字幕视频| 色噜噜狠狠狠综合曰曰曰| 国产成人精品久久二区二区| 成人在线中文字幕| 久久久精品国产网站| 国产精品嫩草视频| 欧美性视频网站| 国产日韩在线看片| 8090成年在线看片午夜| 欧美一区深夜视频| 欧美激情精品久久久久久变态| 国产精品永久免费观看| 国产成人精品免费视频| 国产一区二区精品丝袜| 久久久久久久激情视频| 国产精品激情av在线播放| 日本精品久久久| 亚洲成年网站在线观看| 欧美成人免费在线视频| 一区二区中文字幕| 亚洲女人初尝黑人巨大| 宅男66日本亚洲欧美视频| 操日韩av在线电影| 成人美女av在线直播| 中文字幕亚洲图片| 国产精品久久久久久av下载红粉| 久久青草福利网站| 亚洲美女激情视频| 在线看片第一页欧美| 久久99久国产精品黄毛片入口| 午夜免费久久久久| 777精品视频| 日韩毛片在线观看| 亚洲人成免费电影| 中文字幕日韩欧美精品在线观看| 亚洲成人1234| 国产视频精品va久久久久久| 欧美日韩电影在线观看| 亚洲精品自拍偷拍| 国产热re99久久6国产精品| 91视频国产精品| 久久91超碰青草是什么| 久久精品欧美视频| 久久成人综合视频| 中文字幕日韩免费视频| 成人午夜在线影院| 国产亚洲xxx| 亚洲综合日韩中文字幕v在线| 黑人精品xxx一区| 不卡在线观看电视剧完整版| 国产一区二区三区毛片| 成人性教育视频在线观看| 亚洲欧美资源在线| 亚洲视频一区二区| 久久久中文字幕| 成人日韩av在线| 一区二区三区日韩在线| 日韩免费观看高清| 亚洲第一精品福利| 中文字幕自拍vr一区二区三区| 精品久久久一区二区| 日韩av免费在线观看| 久久琪琪电影院| 日韩av手机在线观看| 91精品中文在线| 欧美性猛交xxxx免费看久久久| 91九色国产社区在线观看| 久久久久久久999| 欧美激情视频免费观看| 久久av在线看| 亚洲精品第一国产综合精品| 亚洲xxxxx电影| 伊人伊成久久人综合网小说| yellow中文字幕久久| 久久国产一区二区三区| 成人精品一区二区三区电影黑人| 97在线免费观看视频| 色综合色综合网色综合| 国精产品一区一区三区有限在线| 亚洲男人天堂手机在线| 久久精品久久久久久国产 免费| 亚洲毛片在线观看.| 亚洲午夜未满十八勿入免费观看全集| 91亚洲国产成人精品性色| 久久99精品久久久久久琪琪| 日韩在线观看网站| 精品久久久免费|