欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

Android

當(dāng)前位置:主頁 > 軟件編程 > Android >

android實(shí)現(xiàn)手寫簽名功能

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:Android|點(diǎn)擊: 次

本文實(shí)例為大家分享了android手寫簽名展示的具體代碼,供大家參考,具體內(nèi)容如下

代碼簡單,就不發(fā)demo了,直接貼代碼

package com.xx;
 
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.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.xx.R;
 
/**
 * Description: 簽名類
 * Copyright:  Copyright (c)2018
 * Company:   
 * author:   Corwin
 * version:   1.0
 * date:    2018/9/5 18:32
 * Modification History:
 * Date     Author   Version   Description
 * ------------------------------------------------------------------
 * 2018/9/5  Corwin   1.0     1.0 Version
 */
public class SignatureActivity extends AppCompatActivity {
 
 private ImageView imageSign;
 private SignatureView mView;
 
 @Override public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_signature);
 
  imageSign = findViewById(R.id.iv_sign);
  FrameLayout frameLayout = findViewById(R.id.fl_view);
 
  mView = new SignatureView(this);
  frameLayout.addView(mView);
  mView.requestFocus();
 
  Button btnClear = findViewById(R.id.btn_clear);
  btnClear.setOnClickListener((v) -> {
    mView.clear();
  });
 
  Button btnOk = findViewById(R.id.btn_ok);
  btnOk.setOnClickListener((v) -> {
    Bitmap imageBitmap = mView.getCachebBitmap();
    imageSign.setImageBitmap(imageBitmap);
  });
 }
 
 /**
  * 自定義簽名控件
  */
 class SignatureView extends View {
 
  //畫筆
  private Paint paint;
 
  //畫布
  private Canvas cacheCanvas;
 
  //位圖
  private Bitmap cachebBitmap;
 
  //圖片保存路徑
  private Path path;
 
  //位圖緩存
  public Bitmap getCachebBitmap() {
   return cachebBitmap;
  }
 
  public SignatureView(Context context) {
   super(context);
   init();
  }
 
  /**
   * 初始化
   */
  private void init() {
   //設(shè)置畫筆
   paint = new Paint();
   paint.setAntiAlias(true);
   paint.setStrokeWidth(3);
   paint.setStyle(Paint.Style.STROKE);
   paint.setColor(Color.BLACK);
   path = new Path();
 
   //創(chuàng)建位圖
   cachebBitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888);
 
   //用自定義位圖構(gòu)建畫布
   cacheCanvas = new Canvas(cachebBitmap);
   //設(shè)置畫布為白色
   cacheCanvas.drawColor(Color.WHITE);
  }
 
  /**
   * 清除畫板,重置畫筆
   */
  public void clear() {
   if (cacheCanvas != null) {
    paint.setColor(Color.WHITE);
    cacheCanvas.drawPaint(paint);
    paint.setColor(Color.BLACK);
    cacheCanvas.drawColor(Color.WHITE);
    invalidate();
   }
  }
 
  @Override protected void onDraw(Canvas canvas) {
   canvas.drawBitmap(cachebBitmap, 0, 0, null);
   canvas.drawPath(path, paint);
  }
 
  @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {
 
   int curW = cachebBitmap != null ? cachebBitmap.getWidth() : 0;
   int curH = cachebBitmap != null ? cachebBitmap.getHeight() : 0;
   if (curW >= w && curH >= h) {
    return;
   }
 
   if (curW < w) curW = w;
   if (curH < h) curH = h;
   Bitmap newBitmap = Bitmap.createBitmap(curW, curH, Bitmap.Config.ARGB_8888);
   Canvas newCanvas = new Canvas();
   newCanvas.setBitmap(newBitmap);
   if (cachebBitmap != null) {
    newCanvas.drawBitmap(cachebBitmap, 0, 0, null);
   }
   cachebBitmap = newBitmap;
   cacheCanvas = newCanvas;
  }
  private float cur_x, cur_y;
  @Override public boolean onTouchEvent(MotionEvent event) {
   float x = event.getX();
   float y = event.getY();
   switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN: {
     cur_x = x;
     cur_y = y;
     path.moveTo(cur_x, cur_y);
     break;
    }
    case MotionEvent.ACTION_MOVE: {
     path.quadTo(cur_x, cur_y, x, y);
     cur_x = x;
     cur_y = y;
     break;
    }
    case MotionEvent.ACTION_UP: {
     cacheCanvas.drawPath(path, paint);
     path.reset();
     break;
    }
   }
   invalidate();
   return true;
  }
 }
}

布局文件:

<?xml version="1.0"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  >
 <ImageView
   android:id="@+id/iv_sign"
   android:layout_width="match_parent"
   android:layout_height="0dp"
   android:layout_gravity="center"
   android:layout_marginBottom="3dp"
   android:layout_weight="1"
   android:background="@color/white"
   />
 <FrameLayout
   android:id="@+id/fl_view"
   android:layout_width="match_parent"
   android:layout_height="0dp"
   android:layout_weight="1"
   android:background="@color/white"
   />
 <LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="@android:drawable/bottom_bar"
   android:paddingTop="3dp"
   >
  <Button
    android:id="@+id/btn_ok"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="確定"
    />
  <Button
    android:id="@+id/btn_clear"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="清除"
    />
 </LinearLayout>
</LinearLayout>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:Android自定義TimeButton實(shí)現(xiàn)倒計(jì)時(shí)按鈕

欄    目:Android

下一篇:Android實(shí)現(xiàn)美團(tuán)外賣底部導(dǎo)航欄動(dòng)畫

本文標(biāo)題:android實(shí)現(xiàn)手寫簽名功能

本文地址:http://mengdiqiu.com.cn/a1/Android/9022.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有