android项目 之 记事本(10) ----- 手写功能之设置画笔大小和画笔颜色

上一节,实现了画板的所有功能,包括设置画笔大小,设置画笔颜色,橡皮擦等功能,而手写,也可以添加设置笔迹大小和颜色的功能,这节就顺势实现手写的调整笔迹大小和调整笔迹的颜色。

先看图:

其实,手写和画板的这些功能都类似,直接复用之前的代码就行,原理如下:

     1. 设置画笔大小的功能:

                   1)初始化画笔。

2)设置画笔的大小为所选择的大小。

3)用一个变量记住当前画笔的大小,用于在进行其他操作后还保持之前设置的画笔大小。

2. 设置画笔颜色的功能:

                   1)初始化画笔。

2)设置画笔的颜色为所选择的颜色。

3)用一个变量记住当前画笔的颜色,用于在进行其他操作后还保持之前设置的画笔颜色。

主要代码(在TouchView中添加)如下:

private Paint mPaint;
private int currentColor = Color.RED;
private int currentSize = 5;
   //设置画笔样式
    public void setPaintStyle(){
 	    mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(currentSize);
        mPaint.setColor(currentColor);
    }

     设置画笔大小:

         //设置画笔的大小
	public void selectHandWritetSize(int which){
		int size =Integer.parseInt(this.getResources().getStringArray(R.array.paintsize)[which]);
    	currentSize = size;
    	setPaintStyle();
	}

设置画笔颜色:

    //设置画笔颜色
    public void selectHandWriteColor(int which){

    	currentColor = paintColor[which];
    	setPaintStyle();
    }
	

在自定义View中添加这些方法后,接下来就是在Activity中调用这些方法了,同上节(在HandWriteActivity.java中添加如下代码):

	//画笔大小
	  case 0:
	  	showPaintSizeDialog(view);
	  	break;
	  //颜色
	  case 1:
	  	showPaintColorDialog(view);
	  	break;

通过点击这两个按钮,弹出对话框,用于选择画笔的大小和颜色

showPaintSizeDialog(view),弹出选择画笔大小的对话框,如下:

  		//弹出画笔大小选项对话框
	  	public void showPaintSizeDialog(View parent){

	  		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this,R.style.custom_dialog);
			alertDialogBuilder.setTitle("选择画笔大小:");

			alertDialogBuilder.setSingleChoiceItems(R.array.paintsize, select_handwrite_size_index, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					select_handwrite_size_index = which;
					touchView.selectHandWritetSize(which);
					dialog.dismiss();
				}
			});

			alertDialogBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					dialog.dismiss();
				}
			});
			alertDialogBuilder.create().show();
	  	}

showPaintColorDialog(view):弹出颜色选择对话框,如下:

		//弹出画笔颜色选项对话框
	  	public void showPaintColorDialog(View parent){

	  		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this,R.style.custom_dialog);
			alertDialogBuilder.setTitle("选择画笔颜色:");

			alertDialogBuilder.setSingleChoiceItems(R.array.paintcolor, select_handwrite_color_index, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					select_handwrite_color_index = which;
					touchView.selectHandWriteColor(which);
					dialog.dismiss();
				}
			});

			alertDialogBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					dialog.dismiss();
				}
			});
			alertDialogBuilder.create().show();
	  	}

里面同样也用到了上节提到的arrays.xml

arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="paintstyle">
        <item>@string/track_line</item>
        <item>@string/Eraser</item>
    </string-array>
    <string-array name="paintsize">
        <item>5</item>
        <item>10</item>
        <item>15</item>
        <item>20</item>
        <item>25</item>
        <item>30</item>
    </string-array>

    <string-array name="paintcolor">
        <item>RED</item>
        <item>BLUE</item>
        <item>BLACK</item>
        <item>GREEN</item>
        <item>YELLOW</item>
        <item>CYAN</item>
        <item>LTGRAY</item>
    </string-array>

</resources>

至此,手写的功能,也已基本全部完成,接下来就剩将手写的字保存成文件,并返回保存文件的路径存储到数据库,后续继续完善。

时间: 2024-10-07 19:28:09

android项目 之 记事本(10) ----- 手写功能之设置画笔大小和画笔颜色的相关文章

android项目 之 记事本(6)----- 添加手写

想必大家都用过QQ的白板功能,里面主要有两项,一个是涂鸦功能,其实类似于上节的画板功能,而另一个就是手写,那记事本怎么能没有这个功能呢,今天就来为我们的记事本添加手写功能. 先上图,看看效果: 看了效果图,是不是心动了呢?那就赶紧着手做吧,其实,手写功能并不难实现,大体就是全屏书写,定时发送handle消息,更新activity. 实现手写功能的主要步骤: 1. 自定义两个View,一个是TouchView,用于在上面画图,另一个是EditText,用于将手写的字显示在其中,并且,要将两个自定义

android项目 之 记事本(8) ----- 画板功能之撤销、恢复和清空

上一节讨论了手写功能中的删除.恢复和清空功能,那么,画板也就是涂鸦怎么能没有撤销.恢复与清空的功能呢,今天就来实现下. 终于会做gif图了,看下面的动态图,是不是和QQ白板功能很像. 之前就简单的只实现了在画板上绘图的功能,所以当时将自定义view直接写在了activity中,这一节由于要实现撤销.恢复及清空的功能,所以将分离出来,单独写成了一个java文件PaintView.java,在该自定义view中实现画板的基本操作. 因为将自定义view单独分离出来,所以需要改到activity的布局

android项目 之 记事本(9) ----- 画板功能之橡皮擦、画笔大小和画笔颜色

上节已实现了画板中的绘制,删除,恢复入清空的功能,还有橡皮擦,设置画笔大小和画笔颜色没有实现,这节就将这几个功能逐一实现. 先看效果图: 以上图中,第一个展示了设置画笔颜色的功能,第二个展示了设置画笔大小的颜色,而第三个则展示了橡皮擦的功能,细心的可以发现,这节将图标颜色设置为了蓝色,并且,增加了最左边的按钮(其实,就是在gridview中多增加了一个item). 下面分别讨论,橡皮擦,设置画笔大小,设置画笔颜色的主要思想:     1. 橡皮擦功能:                    基本

Android Studio升级到0.8.1后如何设置字体大小?

升级到0.8.1后,打开设置字体大小页面,你会发现不管是Default还是Darcula,都不允许你改变字体的大小,其实这个是因为这两个模式是Android Studio自带模式,所以不允许你改动,你要改的话要自定义自己的模式.如下图: 选中一个你想要的样式,然后点击Save as,然后在弹出的对话框中输入你自己定义的样式的名称. 然后再把Scheme name选择成你自定义的样式,这个时候就可以改了. Android Studio升级到0.8.1后如何设置字体大小?,布布扣,bubuko.co

android项目 之 记事本(7)----- 手写功能之删除、恢复和清空

上一节,为记事本添加了手写的功能,但是没有实现底部按钮的各种功能,这节就先实现撤销,恢复和清空的功用. 因为不会录制屏幕成gif图片,所以就以图片形式给出吧,不是很形象,凑合着看: 显然,需要为底部GridView的添加item单击事件: private GridView paint_bottomMenu; paint_bottomMenu = (GridView)findViewById(R.id.paintBottomMenu); paint_bottomMenu.setOnItemClic

android项目 之 记事本(15) ----- 保存手写及绘图

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 之前,忘了写如何将手写和绘图保存,现在补上. 首先看如何保存绘图,先看效果图: 因为记事本的绘图功能主要用到了画布,而在构建画布时,指定了Bitmap,也就是说在画布上的所画的东西都被保存在了Bitmap中,因此,我们只要保存该Bitmap,就可以将我们的所绘制的图形以图片的形式保存,主要代码如下: /* * 保存所绘图形 * 返回绘图文件的存储路径 * */ public S

android项目 之 记事本(5)----- 添加录音

有时,需要将重要的事以语音的形式记录下来,这个在生活中很常见,今天就为记事本添加录音的功能,先看图: 其实在第一节界面设计中,可以看出记事本的功能选项,其中底部选项栏的第三个就是添加录音.   主要步骤如下:               1.   录音Activity的界面设计.               2.   在语音按钮的监听器中添加Intent,跳转到录音Activity,这里同样是用startActivityforResult(Intent intent,int requestCod

android之画板功能之橡皮擦 画笔大小和画笔颜色

第一展示设置画笔颜色的功能,第二展示设置画笔大小的颜色,而第三则展示橡皮擦的功能,这节将图标颜色设置为了蓝色,并且,增加了最左边的按钮(其实,就是在gridview中多增加了一个item). 下面分别讨论,橡皮擦,设置画笔大小,设置画笔颜色的主要思想: 1. 橡皮擦功能: 基本原理:橡皮擦就是用和画布颜色一致颜色的画笔在屏幕触摸,简接实现橡皮擦的功能. 1)初始化画笔,并且设置画笔的颜色为白色(这里其实要设置为画布的颜色). 2)设置画笔的大小为合适的大小. 3)用一个变量记住橡皮擦的颜色,用于

Android Studio升级到0.8.1后怎样设置字体大小?

升级到0.8.1后.打开设置字体大小页面.你会发现无论是Default还是Darcula,都不同意你改变字体的大小.事实上这个是由于这两个模式是Android Studio自带模式,所以不同意你修改,你要改的话要自己定义自己的模式.例如以下图: 选中一个你想要的样式,然后点击Save as,然后在弹出的对话框中输入你自定义的样式的名称. 然后再把Scheme name选择成你自己定义的样式,这个时候就能够改了.