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官方开发文档之从Eclipse迁移到Android Studio开发篇