当前位置: 首页 > article >正文

android开发:android.graphics包的介绍

android.graphics 是 Android 开发中用于处理图形绘制和图像操作的核心包。它提供了丰富的类和接口,用于绘制 2D 图形、处理位图、设置颜色、应用滤镜等。以下是 android.graphics 包中一些常用类和功能的详细介绍:


1. 核心类

(1) Canvas
  • 用于在视图或位图上绘制图形、文本和图像。
  • 常用方法
    • drawColor(int color):填充画布背景颜色。
    • drawLine(float startX, float startY, float stopX, float stopY, Paint paint):绘制直线。
    • drawRect(float left, float top, float right, float bottom, Paint paint):绘制矩形。
    • drawCircle(float cx, float cy, float radius, Paint paint):绘制圆形。
    • drawText(String text, float x, float y, Paint paint):绘制文本。
(2) Paint
  • 用于设置绘制的样式、颜色、字体等属性。
  • 常用方法
    • setColor(int color):设置绘制颜色。
    • setTextSize(float size):设置文本大小。
    • setStyle(Paint.Style style):设置绘制样式(填充、描边等)。
    • setStrokeWidth(float width):设置描边宽度。
(3) Bitmap
  • 表示位图图像,可以用于加载、操作和显示图像。
  • 常用方法
    • createBitmap(int width, int height, Bitmap.Config config):创建一个新的位图。
    • getWidth()getHeight():获取位图的宽度和高度。
    • recycle():释放位图占用的内存。
(4) Color
  • 提供颜色相关的工具方法。
  • 常用方法
    • parseColor(String colorString):将颜色字符串解析为颜色整数。
    • rgb(int red, int green, int blue):通过 RGB 值创建颜色。
    • argb(int alpha, int red, int green, int blue):通过 ARGB 值创建颜色。

2. 图形绘制

(1) 绘制基本形状
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL);

Canvas canvas = new Canvas(bitmap); // 假设 bitmap 是一个已创建的位图
canvas.drawRect(0, 0, 100, 100, paint); // 绘制矩形
canvas.drawCircle(50, 50, 30, paint); // 绘制圆形
(2) 绘制文本
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(30);

Canvas canvas = new Canvas(bitmap);
canvas.drawText("Hello, World!", 10, 50, paint); // 绘制文本

3. 图像操作

(1) 加载位图
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
(2) 缩放位图
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true);
(3) 裁剪位图
Bitmap croppedBitmap = Bitmap.createBitmap(bitmap, x, y, width, height);
(4) 保存位图
try (FileOutputStream out = new FileOutputStream("path/to/save/image.png")) {
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); // 保存为 PNG 格式
} catch (IOException e) {
    e.printStackTrace();
}

4. 颜色处理

(1) 设置颜色
import android.graphics.Color;

Paint paint = new Paint();
paint.setColor(Color.parseColor("#FF6200EE")); // 设置颜色
(2) 提取颜色分量
import android.graphics.Color;

int color = Color.parseColor("#FF0000");
int red = Color.red(color); // 提取红色分量
int green = Color.green(color); // 提取绿色分量
int blue = Color.blue(color); // 提取蓝色分量

5. 滤镜和特效

(1) ColorFilter
  • 用于对位图应用颜色滤镜。
  • 常用子类
    • PorterDuffColorFilter:基于 PorterDuff.Mode 的颜色滤镜。
    • LightingColorFilter:模拟光照效果。
示例:应用颜色滤镜
Paint paint = new Paint();
paint.setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP));

Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bitmap, 0, 0, paint);
(2) Shader
  • 用于设置绘制的渐变或纹理效果。
  • 常用子类
    • LinearGradient:线性渐变。
    • RadialGradient:径向渐变。
    • BitmapShader:位图纹理。
示例:使用线性渐变
Shader shader = new LinearGradient(0, 0, 100, 100, Color.RED, Color.BLUE, Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);

Canvas canvas = new Canvas(bitmap);
canvas.drawRect(0, 0, 100, 100, paint);

6. 其他工具类

(1) Matrix
  • 用于对图形或图像进行变换(平移、缩放、旋转等)。
  • 常用方法
    • setTranslate(float dx, float dy):平移。
    • setScale(float sx, float sy):缩放。
    • setRotate(float degrees):旋转。
示例:旋转位图
Matrix matrix = new Matrix();
matrix.setRotate(45); // 旋转 45 度

Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
(2) Path
  • 用于绘制复杂的路径(如曲线、多边形等)。
  • 常用方法
    • moveTo(float x, float y):移动到指定点。
    • lineTo(float x, float y):绘制直线到指定点。
    • quadTo(float x1, float y1, float x2, float y2):绘制二次贝塞尔曲线。
示例:绘制路径
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(100, 100);
path.quadTo(150, 50, 200, 100);

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);

Canvas canvas = new Canvas(bitmap);
canvas.drawPath(path, paint);

7. 总结

android.graphics 包提供了强大的图形绘制和图像处理功能,涵盖了从基本形状绘制到复杂图像操作的所有需求。以下是常见的应用场景:

  • 绘制 UI 元素:使用 CanvasPaint 绘制自定义视图。
  • 图像处理:使用 BitmapMatrix 进行图像加载、缩放、旋转等操作。
  • 颜色处理:使用 ColorColorFilter 设置颜色和滤镜效果。
  • 路径绘制:使用 Path 绘制复杂的图形。

http://www.kler.cn/a/590199.html

相关文章:

  • SQL注入:安全威胁的幽灵与防御体系的构建——从经典攻击到智能防护的演进
  • Spring 中使用代理的注解及机制分析
  • matlab 正态分布
  • Flink State 是处理有状态流计算的核心机制,其典型应用场景及具体说明
  • 正则表达式小结
  • Redis-锁-商品秒杀防止超卖
  • HTML深度解读
  • 视频转音频, 音频转文字
  • 物联网(IoT)架构中,平台层的应用与技术
  • Spring Security 教程:从入门到精通(含 OAuth2 接入)
  • 硬件驱动——51单片机:独立按键、中断、定时器/计数器
  • linux自律 第 40 天
  • docker可视化之dpanel
  • Android的消息机制
  • 黑马商城完成随笔
  • SpringBoot 第一课(Ⅲ) 配置类注解
  • 网页制作18-Javascipt图像特效の图片闪烁
  • Python + Qt Designer构建多界面GUI应用程序:Python如何调用多个界面文件
  • Qt常用控件之网格布局QGridLayout
  • 使用 GetX 实现状态管理:同一页面和不同页面之间的数据变化