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 元素:使用
Canvas
和Paint
绘制自定义视图。 - 图像处理:使用
Bitmap
和Matrix
进行图像加载、缩放、旋转等操作。 - 颜色处理:使用
Color
和ColorFilter
设置颜色和滤镜效果。 - 路径绘制:使用
Path
绘制复杂的图形。