Android 音视频开发

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

思维导图:

Android中想要自定义绘制一个圆柱形怎么做_音视频


文章目录

  • Android 音视频开发
  • 自定义view绘制图片
  • 一、[如何通过自定义view绘制](https://www.jianshu.com/p/705a6cb6bfee)?
  • 二、实现过程
  • 1.配置图片和view控件
  • 2.编写code
  • 3. 效果显示:
  • 三 总结

自定义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中添加图片

Android中想要自定义绘制一个圆柱形怎么做_自定义_02

配置 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. 效果显示:

模拟器中显示被绘制的图片。

Android中想要自定义绘制一个圆柱形怎么做_android_03


三 总结

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

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

总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于 java开发 的学习思路及方向。从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。