多媒体技术
- Paint(绘图)
public class Paintextends Object
|
使用Paint绘制图形
View:
package com.makyan.demo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Rect; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; public class MyView extends View { public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { // 覆写绘图方法 canvas.drawColor(Color.WHITE) ; // 设置背景颜色 Paint paint = new Paint() ; // 定义Paint对象 paint.setColor(Color.BLUE) ; // 设置为蓝色显示 canvas.drawCircle(30, 50, 25, paint) ; // 画圆 paint.setColor(Color.BLACK) ; // 设置为黑色显示 canvas.drawRect(80, 20, 160, 80, paint) ; // 画矩形 Rect rect = new Rect() ; // 定义矩形 rect.set(180, 20, 300, 80); // 设置矩形大小 paint.setStyle(Style.STROKE); // 空心显示 canvas.drawRect(rect, paint) ; // 画矩形 paint.setColor(Color.RED) ; // 设置为红色 paint.setTextSize(20) ; // 设置字体大小 canvas.drawText("杨雄android工作室", 10, 110, paint); // 显示文字 paint.setColor(Color.BLACK) ; // 设置为黑色显示 canvas.drawLine(10, 120, 300, 120, paint); // 画线 RectF oval = new RectF() ; // 定义参考矩形 oval.set(10.0f, 140.0f, 110.0f, 200.0f); // 定义大小 canvas.drawOval(oval, paint) ; // 画椭圆 oval = new RectF() ; // 定义参考矩形 oval.set(150.0f, 140.0f, 210.0f, 200.0f); // 定义大小 canvas.drawArc(oval, 150.0f, 140.0f, true, paint) ;// 画弧 } }
|
组件配置(配置自己的视图):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".PaintActivity" > <com.makyan.demo.MyView android:id="@+id/myView" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> |
public final class Bitmapextends Object implements Parcelable
|
Bitmap是Android手机中专门提供的用于操作图片资源的操作类,使用此类可以直接从资源文件之中进行图片
资源的读取,并且对这些图片进行一些简单的修改。
范例:使用Bitmap进行绘图
View:
package com.makyan.demo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class MyView extends View { public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { // 绘图 Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(), R.drawable.tt); Paint paint = new Paint(); paint.setAntiAlias(true); // 消除锯齿 canvas.drawBitmap(bitmap, 0, 0, paint); // 画图 paint.setColor(Color.BLUE); // 蓝色字体 paint.setTextSize(20); // 定义字号 canvas.drawText( "图片高度:" + bitmap.getHeight() + ",图片宽度:" + bitmap.getWidth(), 10, bitmap.getHeight() + 20, paint); // 输出文字 } }
|
组件配置:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".BitmapActivity" > <com.makyan.demo.MyView android:id="@+id/myview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> |
范例:使用DisplayMetrics将图片的宽和高设置为屏幕的宽和高
修改View:
package com.makyan.demo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.View; public class MyView extends View { public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { // 绘图 DisplayMetrics dm = getResources().getDisplayMetrics(); int screenWidth = dm.widthPixels ; // 取得手机屏幕的宽度 int screenHeight = dm.heightPixels ; // 取得手机屏幕的高度 Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(), R.drawable.tt); // 取得Bitmap bitmap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight, true); // 创建一个指定大小的图片 Paint paint = new Paint(); paint.setAntiAlias(true); // 消除锯齿 canvas.drawBitmap(bitmap, 0, 0, paint); // 画图 } }
|
范例:将图片在指定位置显示:
修改View: