Android 音视频开发之基础篇 自定义view绘制图片

Android 音视频开发

上一篇文章: Android 音视频开发之基础篇 使用SurfaceView绘制图片



自定义view绘制图片

Android View简介:
View是Android中所有控件的基类,包括TextView,Button还是复杂的LinearLayout和ListView;
https://www.jianshu.com/p/1ba3d28781e4


一、如何通过自定义view绘制

自定义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);
        // 不建议在onDraw做任何分配内存的操作
        if (bitmap != null) {
            canvas.drawBitmap(bitmap, 0, 0, paint);
        }
    }
}

3. 效果显示:

模拟器中显示被绘制的图片。
在这里插入图片描述


三 总结

音视频开发绘制图片的三种方式:
ImageView
SurfaceView
自定义View
以上已实现

接下来去挑战任务二:使用 AudioRecord 采集音频PCM并保存到文件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值