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>

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

 



     



 

 

 

 

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Android记事本应用程序中添加拍照功能,需要进行如下步骤: 1. 添加权限:在AndroidManifest.xml文件中添加以下权限 ```xml <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 2. 在布局文件中添加一个Button或ImageView,用于触发拍照事件。 3. 在Java代码中添加以下代码,用于处理拍照事件 ```java private static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); // 将图片存储到文件或数据库中 } } ``` 4. 在AndroidManifest.xml文件中添加以下provider,用于保存图片 ```xml <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.mynotebook.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> ``` 5. 在res/xml目录下创建file_paths.xml文件,添加以下代码 ```xml <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="my_images" path="Android/data/com.example.mynotebook/files/Pictures" /> </paths> ``` 6. 将拍摄的图片保存到文件中。 ```java private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, /* prefix */ ".jpg", /* suffix */ storageDir /* directory */ ); // Save a file: path for use with ACTION_VIEW intents currentPhotoPath = image.getAbsolutePath(); return image; } ``` 7. 将图片显示在ImageView或者列表中。 参考代码: https://github.com/MindorksOpenSource/android-mvp-architecture/tree/master/app/src/main/java/com/mindorks/framework/mvp/ui/photo_gallery

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值