Android 音视频开发
上一篇文章: Android 音视频开发之基础篇 使用SurfaceView绘制图片
思维导图:
自定义view绘制图片
Android View简介: View是Android中所有控件的基类,包括TextView,Button还是复杂的LinearLayout和ListView; https://www.jianshu.com/p/1ba3d28781e4
自定义View的实现方式有以下几种 类型 定义 自定义组合控件 多个控件组合成为一个新的控件,方便多处复用 继承系统View控件 继承自TextView等系统控件,在系统控件的基础功能上进行扩展 继承View 不复用系统控件逻辑,继承View进行功能定义 继承系统ViewGroup 继承自LinearLayout等系统控件,在系统控件的基础功能上进行扩展 继承ViewViewGroup 不复用系统控件逻辑,继承ViewGroup进行功能定义
View绘制流程 View的绘制基本由measure()、layout()、draw()这个三个函数完成 函数 作用 相关方法 measure() 测量View的宽高 measure(),setMeasuredDimension(),onMeasure() layout() 计算当前View以及子View的位置 layout(),onLayout(),setFrame() draw() 视图的绘制工作 draw(),onDraw()
这里我们采用 继承View + draw()的方法去绘制。
二、实现过程
1.配置图片和view控件
在mipmap中添加图片
配置 activity_main.xml:
<view
android:id="@+id/view"
class="com.example.myapplication.CustomView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="113dp"
tools:layout_editor_absoluteY="84dp"
tools:ignore="MissingClass,MissingConstraints" />
2.编写code
代码如下:
package com.example.myapplication;
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.view.View;
import androidx.annotation.Nullable;
public class CustomView extends View {
Paint paint = new Paint();
Bitmap bitmap;
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
}
3. 效果显示:
模拟器中显示被绘制的图片。
三 总结
音视频开发绘制图片的三种方式: ImageView SurfaceView 自定义View 以上已实现
接下来去挑战任务二:使用 AudioRecord 采集音频PCM并保存到文件
|