Android Paint属性详解

2024-05-15 23:48
文章标签 android 详解 属性 paint

本文主要是介绍Android Paint属性详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 


最近项目中遇到要绘制一个橡皮擦类类似功能的模块。于是总结了下Paint的属性



      1. 图形绘制  画线 画图片等

      列出一些重要的属性
         1. setARGB(int a,int r,int g,int b);  //设置绘制的颜色,a代表透明度,r,g,b代表颜色值。  
          2.setAlpha(int a); //a[0..255] 0:代表全透明  255代表不透明

         3.setStrokeWidth(int);//置画笔的大小

         4.setStrokeCap(Cap cap);//设置笔刷的样式 Paint.Cap.Round ,Cap.SQUARE等分别为圆形、方形

         5.setStyle(Style style);//画笔样式。 Paint.Style.STROKE为一条线。Paint.Style.FILL是从起点开始。一直到终点为止,形成一扇形的绘制区。Paint.Style.FILL_AND_STROKE 为扇形区再加上一个圈
         6. setShadowLayer(float radius ,float dx,float dy,int color);  
        //在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色  
     
       7.setXfermode(Xfermode xfermode);  
     // 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果  
    
      2.文本绘制
  

      这里文本有人总结了挺好的,不浪费时间 给连接http://hi.baidu.com/982012087/item/4879442440d49dc0a417b645

     3、案例分析

      

package com.example.drawbeforebkg;import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.graphics.AvoidXfermode.Mode;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuffXfermode;
import android.graphics.Xfermode;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;public class MainActivity extends Activity {Path path = new Path();private CircleView mGameView =null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);mGameView = new CircleView(this);mGameView.setBackgroundDrawable(getResources().getDrawable(R.drawable.logo) );//设置的背景图片 setContentView(mGameView);}class CircleView extends View implements Runnable{int x,y;Canvas canvas;Bitmap resizedBitmap1 ;Paint paint;private int oldx ,oldy;DisplayMetrics  dm = new DisplayMetrics(); CircleView(Context context)//构造函数{super(context);getWindowManager().getDefaultDisplay().getMetrics(dm); // 获取手机屏幕的大小int  view_w = dm.widthPixels; int   view_h = dm.heightPixels; paint=new Paint();paint.setStrokeWidth(20); //当Style为STROKE或者为FILL——OR——STROKEpaint.setColor(Color.RED); //设置颜色值paint.setAlpha(100);//设置透明度paint.setStyle(Paint.Style.STROKE); paint.setStrokeCap(Paint.Cap.ROUND);paint.setStrokeJoin(Paint.Join.ROUND);paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.CLEAR));//paint.setAntiAlias(false);  // paint.setDither(true);//设置是否使用图像抖动处理,会使画笔更平滑饱满。图像更清晰resizedBitmap1 = Bitmap.createBitmap(view_w, view_h, Config.ARGB_8888);canvas = new Canvas(resizedBitmap1);//第一步:构造函数中,将resizedBitmap1作为画布背景new Thread(this).start();}public boolean onTouchEvent(MotionEvent event){x=(int) event.getX();y=(int) (event.getY());switch (event.getAction()) {case MotionEvent.ACTION_DOWN:path.moveTo(x, y);oldx = x;oldy = y;break;case MotionEvent.ACTION_MOVE://path.lineTo(x, y);      path.quadTo(oldx, oldy, x, y);canvas.drawPath(path, paint);//第二步:指定轨迹画图,将path画在画布上          oldx = x;oldy = y;break;case MotionEvent.ACTION_UP:break;default:            break;}return true;
}@Overridepublic  void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawBitmap(resizedBitmap1,0,0,paint);//第三步:时刻显示画布上的布景}public void run(){while (!Thread.currentThread().isInterrupted()){try{Thread.sleep(20);}catch (InterruptedException e){Thread.currentThread().interrupt();}// 使用postInvalidate可以直接在线程中更新界面postInvalidate();}}}}


 

 


     

 

这篇关于Android Paint属性详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993271

相关文章

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情