Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片

Posted 保尔柯察杨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片相关的知识,希望对你有一定的参考价值。

android 音视频开发

上一篇文章:使用 imageview绘制一张图片
任务一 SurfaceView绘制一张图片


文章目录


前言

提示:SurfaceView:

1 为什么要用surfaceview?
一般UI是在应用程序的主线程中绘制,但是对一些游戏画面,或者摄像头,视频播放等,UI都比较复杂,要求能够进行高效的绘制,这时候就必须要给复杂而高效的UI视图生成一个独立的绘制表面Surface,并且使用独立的线程来绘制这些视图UI,参考:
https://juejin.cn/post/6844903968217235469


一、surfaceview是什么?

官网:https://developer.android.com/reference/android/view/SurfaceView
sufaceview继承view, 这个视图里内嵌了一个专门用于绘制的Surface, 可以在子线程中绘制

二、实现方法

1.配置activity_main.xml

<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="146dp"
tools:layout_editor_absoluteY="236dp"
tools:ignore="MissingConstraints" />

2.编写code

findViewByID SurfaceView 实例化
-> SurfaceHolder.callback
-> surfaceCreated
(Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test);
-> canvas.drawBitmap(bitmap, 0, 0, paint); //执行绘制操作

代码如下(示例):

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

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.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity 
    private ImageView imageView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

     SurfaceView mSurfaceView = findViewById(R.id.surfaceView);

        mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() 
            @Override
            public void surfaceCreated(SurfaceHolder holder) 
                if (holder == null) 
                    return;
                

                Paint paint = new Paint();
                paint.setAntiAlias(true);
                paint.setStyle(Paint.Style.STROKE);
                Bitmap bitmap =   BitmapFactory.decodeResource(getResources(),
                        R.mipmap.test);
                Canvas canvas = holder.lockCanvas();  // 先锁定当前surfaceView的画布
                canvas.drawBitmap(bitmap, 0, 0, paint); //执行绘制操作
                holder.unlockCanvasAndPost(canvas); // 解除锁定并显示在界面上
            

            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 

            

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) 

            
        );
    



3.效果显示


总结

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

云小课|DGC数据开发之基础入门篇

阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。

摘要:欢迎来到DGC数据开发的世界,花十分钟跟着云小课一起学习云数据开发。本文主要介绍DGC数据开发的基本概念、优势、应用场景及数据开发的示例,帮助您快速掌握智能数据开发。

本文分享自华为云社区《【云小课】EI第36课 DGC数据开发之基础入门篇(10分钟扫盲)》,原文作者:阅识风云

DGC数据开发简介

数据湖治理中心 (Data Lake Governance Center,简称DGC) ,是具有智能数据管理能力的一站式治理运营平台,包含数据集成、数据开发、规范设计、数据质量监控、数据资产管理、数据服务、数据安全等功能。DGC数据开发又称数据湖工厂(Data Lake Factory,简称DLF),它可管理多种大数据服务,提供一站式的大数据开发环境、全托管的大数据调度能力,极大降低用户使用大数据的门槛,帮助用户快速构建大数据处理中心。

使用数据开发模块,用户可进行脚本开发、作业开发、作业调度、运维监控等操作,轻松完成整个数据的处理分析流程。

DGC数据开发的优势

应用场景

云上数仓快速搭建

通过数据集成模块将线下数据迁移到华为云上,将数据集成到华为云大数据服务中,并在数据开发模块中进行数据开发。

数据分析业务流自动化

通过数据开发模块实现数据导入、清洗、机器学习、数据回传、报表生成端到端流程自动化,把业务搬上自动化流水线。

复杂BI报表生成自动化

通过数据开发模块的脚本开发、数仓管理和作业开发功能,快速开发报表所需的脚本以及灵活自动生成BI报表。

海量日志轻松分析挖掘

通过DIS将日志数据接入到OBS存储(或者Cloud Search服务),然后通过数据开发模块服务编写数据开发脚本和数据挖掘脚本,实现海量日志分析和挖掘。

DGC数据开发示例

本节课我们将通过DLF的Hive SQL任务,定期执行脚本统计表数据,当表数据大于某个值发送通知为例进行介绍。

Step1:登录DGC控制台

Substep1:访问华为云管理控制台。

Substep2:单击管理控制台左上角的符号,选择区域和项目。

Substep3:在首页“服务列表”中,选择“大数据 > 数据湖治理中心DGC”,进入DGC服务的概览页面。

Step2:创建数据连接

数据连接用于保存DLF数据实体的连接信息,本示例需要先创建MRS Hive的数据连接,其中绑定的Agent由CDM集群提供。

Substep1:在DGC控制台的相应的工作空间,单击“管理中心”,进入数据连接页面。

Substep2:单击“创建数据连接”,弹出“创建数据连接”页面,配置如下所示。

Substep3:单击“测试”,测试数据连接的连通性。如果无法连通,数据连接将无法创建。

Substep4:单击“确定”,创建数据连接。

Step3:创建和开发脚本

数据连接“mrs_hive”创建完成后,需要在线开发SQL脚本,用于查询MRS Hive表“hive_dt”的信息。

Substep1:在DGC控制台的顶部导航栏,选择对应工作空间,单击“数据开发 > 脚本开发”。

Substep2:单击“新建SQL脚本 > Hive”,进入脚本开发页面。

Substep3:选择脚本的“数据连接”为“mrs_hive”、“数据库”为“hive_db”,输入如下SQL语句。

select * from hive_dt;

Substep4:单击“运行”,查询数据表“hive_dt”,执行结果如下所示。

Substep5:单击保存脚本。

Substep6:单击保存并提交版本,提交后的脚本在下一步的作业中使用。

Step4:创建和开发作业

脚本“hive_sql”开发完成后,需要通过作业进行编排和调度,实现定期执行脚本,统计MRS Hive表数据的任务。

Substep1:在DGC控制台的顶部导航栏,选择对应工作空间,单击“数据开发 > 作业开发”。

Substep2:单击“新建作业”,弹出“新建作业”页面,配置如下所示。

Substep3:单击“确定”,新建作业。

Substep4:进入作业开发页面,拖动Hive SQL节点任务到画布并单击,在右侧的“节点属性”页面配置如下所示。

Substep5:单击右侧的“调度配置”页签,配置调度信息,如下所示。

Substep6:单击保存作业。

Substep7:单击保存并提交版本。

  • 提交后的作业可以在作业监控页面查看作业的运行情况和结果;
  • 作业每次运行,都会对应产生一次作业实例记录。在实例监控页面,可以查看作业的实例信息。

Step5:配置通知任务

作业“job_hive_sql”开发完成后,配置作业的通知任务,当作业运行异常时向相关人员发送通知。

Substep1:登录DGC控制台,进入数据开发模块。

Substep2:单击“运维调度 > 通知管理”。

Substep3:在作业的“操作”列,单击“编辑”,弹出“编辑通知”页面,配置如下所示。

Substep4:单击“确定”,完成作业通知配置任务。

Step6:查看作业和实例运行记录

作业的调度任务启动后,可以查看作业和实例任务的运行记录与结果。

Substep1:登录DGC控制台,进入数据开发模块。

Substep2:单击“运维调度 > 作业监控”。

Substep3:单击作业名称,查看作业的详细运行情况。

Substep4:单击“运维调度 > 实例监控”。

Substep5:单击作业名称前的,查看作业运行产生实例的详细运行情况。

----结束

好了,本期云小课就介绍到这里,学习完本期课程,您是否觉得数据开发竟然这么简单呢。哈哈,快去登录华为云数据湖治理中心Console体验一下吧,想要了解更多数据开发的知识猛戳这里。

点击关注,第一时间了解华为云新鲜技术~

以上是关于Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片的主要内容,如果未能解决你的问题,请参考以下文章

Android NDK开发学习思路以及知识要点(音视频篇)

Android官方开发文档之从Eclipse迁移到Android Studio开发篇

Android移动开发视频之传感器应用开发

给Android工程师的音视频教程之一文弄懂MediaCodec

android基础篇学习心得

东方耀 手把手教React Native实战开发视频教程+源码笔记全集