Android手写板

news/2024/11/7 14:34:20/

点击按钮 

WritePadDialog mWritePadDialog = new WritePadDialog(activity, new WritePadDialog.WriteDialogListener() {@Overridepublic void onPaintDone(Object object) {mSignBitmap = (Bitmap) object;createSignFile();}});mWritePadDialog.show();

画板对框

public class WritePadDialog extends Dialog {private Context mContext;private WriteDialogListener mWriteDialogListener;private PaintDrawingboard mPaintView;private FrameLayout mFrameLayout;private Button mBtnOK, mBtnClear, mBtnCancel;public WritePadDialog(Context context,WriteDialogListener writeDialogListener) {super(context);this.mContext = context;this.mWriteDialogListener = writeDialogListener;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE); //无标题setContentView(R.layout.write_pad);mFrameLayout = findViewById(R.id.tablet_view);// 获取屏幕尺寸DisplayMetrics mDisplayMetrics = new DisplayMetrics();getWindow().getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics);int screenWidth = mDisplayMetrics.widthPixels;int screenHeight = mDisplayMetrics.heightPixels;mPaintView = new PaintDrawingboard(mContext, screenWidth, screenHeight);mFrameLayout.addView(mPaintView);mPaintView.requestFocus();mBtnOK = findViewById(R.id.write_pad_ok);mBtnOK.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mPaintView.getPath().isEmpty()) {Toast.makeText(mContext, "请输入签名", Toast.LENGTH_SHORT).show();return;}mWriteDialogListener.onPaintDone(mPaintView.getPaintBitmap());dismiss();}});mBtnClear = (Button) findViewById(R.id.write_pad_clear);mBtnClear.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mPaintView.clear();}});}public interface WriteDialogListener {public void onPaintDone(Object object);}
}

 

画板功能

public class PaintDrawingboard extends View {private Paint mPaint;private Path mPath;private Bitmap mBitmap;private Canvas mCanvas;private int screenWidth, screenHeight;private float currentX, currentY;public PaintDrawingboard(Context context, int screenWidth, int screenHeight) {super(context);this.screenWidth = screenWidth;this.screenHeight = screenHeight;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();mBitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888);mCanvas = new Canvas(mBitmap);
//		mCanvas.drawColor(Color.WHITE);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawBitmap(mBitmap, 0, 0, null);canvas.drawPath(mPath, mPaint);}@Overridepublic boolean onTouchEvent(MotionEvent event) {float x = event.getX();float y = event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:currentX = x;currentY = y;mPath.moveTo(currentX, currentY);break;case MotionEvent.ACTION_MOVE:currentX = x;currentY = y;mPath.quadTo(currentX, currentY, x, y); // 画线break;case MotionEvent.ACTION_UP:mCanvas.drawPath(mPath, mPaint);break;}invalidate();return true;}public Bitmap getPaintBitmap() {return resizeImage(mBitmap, 320, 480);}public Path getPath() {return mPath;}// 缩放public Bitmap resizeImage(Bitmap bitmap, int width, int height) {int originWidth = bitmap.getWidth();int originHeight = bitmap.getHeight();float scaleWidth = ((float) width) / originWidth;float scaleHeight = ((float) height) / originHeight;Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, originWidth, originHeight, matrix, true);return resizedBitmap;}//清除画板public void clear() {if (mCanvas != null) {mPath.reset();mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);invalidate();}}
}

保存bitmap成手机图片

//创建签名文件private void createSignFile() {ByteArrayOutputStream baos = null;FileOutputStream fos = null;String path = null;File file = null;try {SimpleDateFormat simpleDateFormat = new SimpleDateFormat();simpleDateFormat.applyPattern("yyyy年MM月dd日 HH时mm分ss秒");path = Environment.getExternalStorageDirectory() + File.separator + simpleDateFormat.format(System.currentTimeMillis()) + ".jpg";file = new File(path);fos = new FileOutputStream(file);baos = new ByteArrayOutputStream();//如果设置成Bitmap.compress(CompressFormat.JPEG, 100, fos) 图片的背景都是黑色的mSignBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);byte[] b = baos.toByteArray();if (b != null) {fos.write(b);}} catch (IOException e) {e.printStackTrace();} finally {try {if (fos != null) {fos.close();}if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}}

 

layout文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><FrameLayoutandroid:id="@+id/tablet_view"android:layout_width="fill_parent"android:layout_height="300dp" /><TextViewandroid:id="@+id/divider2"android:layout_width="match_parent"android:layout_height="0.3dp"android:layout_below="@id/tv_pay_money_type"android:background="@color/colore9e9e9" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@color/color_f6f6f6"><Buttonandroid:id="@+id/write_pad_ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="@color/white"android:text="确定" /><Buttonandroid:id="@+id/write_pad_clear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="@color/white"android:text="清除" /></LinearLayout></LinearLayout>

 


http://www.ppmy.cn/news/254630.html

相关文章

s400x ugee 驱动_友基手写板驱动下载_友基手写板驱动官方下载-太平洋下载中心...

此款驱动是友基官方发布的手写板最新驱动&#xff0c;支持型号为Rainbow CV720、新绘影G5和绘影EX07。新版本驱动增加和优化了部分功能&#xff0c;推荐朋友下载使用。 驱动功能&#xff1a; 1.鼠标功能&#xff1a;压感笔可以完全取代鼠标以控制计算机屏幕上的光标、卷页及可定…

win10触屏输入法_Win10触摸键盘怎么使用手写板功能输入?

很多知友经常提出问题&#xff0c;有一些特殊符号或怪僻字在电脑上不知如何输入。如果使用系统自带的触摸键盘上的手写板&#xff0c;这个问题就迎刃而解了。下面介绍Windows10系统如何使用触摸键盘的手写板&#xff0c;输入怪僻字和特殊符号的方法。Windows10系统自带触摸键盘…

安卓手写板app

最近做的一个课程实验&#xff0c;开发一个可以手写的应用程序&#xff0c;可供用户选择笔迹颜色以及笔迹大小。具体效果如下&#xff1a; 1&#xff09;在XML文件中定义RadioGroup、RadioButton&#xff0c;SeekBar以及自定义View——WritingView。具体布局就不介绍了&#xf…

友基s400手写板怎么安装_手写板安装,手把手教你电脑手写板怎么安装

网络飞速发展的年代,越来越多的人加入到网络世界中,其中包括我们的父辈、爷辈。他们不会拼音不会五笔怎么去网上搜索资料呢?那么就需要有一款能提供手写的软件来帮助他们上网冲浪、浏览新闻等资讯。具体要怎么去做呢?下面,小编给大家讲解安装电脑手写板的技巧。 随着科技的…

友基s400手写板怎么安装_电脑手写板怎么安装 轻松学会安装手写板【图文】

很多人买了手写板拿到手,却苦恼于自己是电脑小白而不会安装手写板或者是电脑手写板安装不成功。电脑手写板怎么安装?下面我们一起来学习下怎么安装电脑手写板。 电脑手写板怎么安装 1、把手写板的驱动盘放进光驱,一般手写板的驱动盘比较小,放进光驱的时候要使劲卡住光盘才行…

友基s400手写板怎么安装_电脑手写板安装步骤 手写板怎么用

电脑手写板就像手机的触笔,无论是书写还是娱乐,只要轻轻一点就可以了,用起来十分方便,所以你知道为什么电脑手写板卖得这么火了吧!那么,到底手写板怎么用呢?下面随小编一起看看手写板怎么用吧。 一、正确安装手写板 手写板在第一次使用的时候要先安装好,以下是安装详细…

友基s400手写板怎么安装_手写板安装,教您电脑手写板怎么安装

网络飞速发展的年代&#xff0c;越来越多的人加入到网络世界中&#xff0c;其中包括我们的父辈、爷辈。他们不会拼音不会五笔怎么去网上搜索资料呢&#xff1f;那么就需要有一款能提供手写的软件来帮助他们上网冲浪、浏览新闻等资讯。具体要怎么去做呢&#xff1f;下面&#xf…

Nexus 4 解锁

Nexus 4 解锁 1. 下载并安装Android SDK http://developer.android.com/sdk/index.html 下载ADT Bundle与SDK Tools Only都可以&#xff0c;把SDK Manager中Android SDK Tools、Android SDK Platform-tools、Google USB Driver的包选择并安装。 (推荐将[Android SDK安装路径]\a…