(一)ImageView绘制图片
(1)将图片分别放入mipmap-hdpi、assets
(2)布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ImageViewandroid:id="@+id/iv_picture"android:layout_width="match_parent"android:layout_height="wrap_content"></ImageView></LinearLayout>

(3)代码:

// ImageView加载几种来源: // (1)drawable/mipmap中通过R.drawabe.xxx加载图片资源 // (2)assests路径的资源public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImageView customImageView = findViewById(R.id.iv_picture);// 方式一:drawable/mipmap中通过R.drawabe.xxx加载图片资源// customImageView.setBackgroundResource(R.mipmap.wuqian);// 方式二:加载assests路径的资源customImageView.setImageBitmap(getImageFromAssetsFile(this, "lilangdi.jpg"));}public static Bitmap getImageFromAssetsFile(Context context, String fileName) {Bitmap image = null;AssetManager am = context.getResources().getAssets();try {InputStream is = am.open(fileName);image = BitmapFactory.decodeStream(is);is.close();} catch(IOException e) {e.printStackTrace();}return image;}}

(二)SurfaceView绘制图片
(1)将图片放入手机文件夹内
(2)布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><SurfaceViewandroid:id="@+id/sv_drawpicture"android:layout_width="match_parent"android:layout_height="match_parent"></SurfaceView></LinearLayout>

(3)添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

(4)代码:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);verifyStoragePermissions(this);setContentView(R.layout.activity_main);SurfaceView mSurfaceView = findViewById(R.id.sv_drawpicture);mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {if (holder == null) {return;}Paint paint = new Paint();paint.setAntiAlias(true);paint.setStyle(Paint.Style.STROKE);// 方式一:Environment.getExternalStorageDirectory().getPath()获取路径为:/storage/emulated/0// File.separator得到的是:/Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath() + File.separator + "wuqian.jpg");  // 获取bitmap// 方式二:// Bitmap bitmap = BitmapFactory.decodeFile("/storage/emulated/0/wuqian.jpg");  // 获取bitmapCanvas canvas = holder.lockCanvas();  // 先锁定当前surfaceView的画布canvas.drawBitmap(bitmap, 0, 0, paint); //执行绘制操作holder.unlockCanvasAndPost(canvas); // 解除锁定并显示在界面上}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {}});}private static final int REQUEST_EXTERNAL_STORAGE = 1;private static String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE" };public static void verifyStoragePermissions(Activity activity) {try {// 检测是否有写的权限int permission = ActivityCompat.checkSelfPermission(activity,"android.permission.WRITE_EXTERNAL_STORAGE");if (permission != PackageManager.PERMISSION_GRANTED) {// 没有写的权限,去申请写的权限,会弹出对话框ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);}} catch (Exception e) {e.printStackTrace();}}}

(三) 自定义View绘制图片
(1)将图片放入手机或者放入mipmap-hdpi
(2)布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.lzacking.viewdemo.CustomViewandroid:id="@+id/customview"android:layout_width="match_parent"android:layout_height="match_parent"></com.lzacking.viewdemo.CustomView></LinearLayout>

(3)添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

(4)代码:

CustomView: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.decodeFile(Environment.getExternalStorageDirectory().getPath() + File.separator + "kugou.png");  // 获取bitmap// 方式二:从mipmap-hdpi读取图片// bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.taylor);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 不建议在onDraw做任何分配内存的操作if (bitmap != null) {canvas.drawBitmap(bitmap, 0, 0, paint);}}}

MainActivity:

// 方式一:从手机读取图片
// 方式二:从mipmap-hdpi读取图片

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 如果从手机读取图片,则需要申请权限verifyStoragePermissions(this);setContentView(R.layout.activity_main);}private static final int REQUEST_EXTERNAL_STORAGE = 1;private static String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE" };public static void verifyStoragePermissions(Activity activity) {try {// 检测是否有写的权限int permission = ActivityCompat.checkSelfPermission(activity,"android.permission.WRITE_EXTERNAL_STORAGE");if (permission != PackageManager.PERMISSION_GRANTED) {// 没有写的权限,去申请写的权限,会弹出对话框ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);}} catch (Exception e) {e.printStackTrace();}}}

抖音短视频APP开发通过三种方式绘制图片相关推荐

  1. IOS抖音短视频APP开发关于扫描二维码,并根据文本生成二维码

    IOS抖音短视频APP开发关于扫描二维码,(根据光线强弱显示隐藏闪光灯)并根据文本生成二维码. WeakSelf; //IOS抖音短视频APP开发构建扫描样式视图 _scanView = [[WSLS ...

  2. 抖音短视频APP开发如何生成二维码?

    授权转载自云豹网络科技的CSDN博客 原文链接:https://blog.csdn.net/yb1314111/article/details/101283985 IOS抖音短视频APP开发关于扫描二 ...

  3. 抖音短视频APP开发进度条(ProgressBar)的功能与用法

    在layout下的activity_main中: <?xml version="1.0" encoding="utf-8"?> <Linear ...

  4. 抖音短视频APP开发逻辑翻页与物理翻页

    逻辑翻页与物理翻页的区别 逻辑分页-假分页:将数据全部加载到内存,根据rowBound里面的偏移量,和条数,将偏移量之前的都去掉,只去从偏移量开始后指定数量的那一部分: 物理分页- 真分页:将分页信息 ...

  5. 如何开发仿抖音短视频APP源码?

    如何开发仿抖音短视频APP源码? 流程列表 开发一个短视频最主要的流程分为 3 个,下面我将分步教你实现这 3 个流程下的各个功能点,功能点 API 可按需调用: 视频拍摄 a.启动拍摄 b.给拍摄添 ...

  6. 原生Java高仿抖音短视频APP双端源码

    简介: 从别的网站199购买的原生Java高仿抖音短视频APP双端源码,免费给大家~ 源码未测试,java开发,上手有难度,小白童鞋请勿瞎捣鼓. 安卓语言是:android stdio 苹果语言是:O ...

  7. 抖音短视频APP——产品体验报告

    本文是抖音短视频APP的一份产品体验报告,主要从体验环境.市场概况.产品概况.目标用户人群.产品架构图.主要功能分析.交互体验.视觉设计和优化建议这九个方面进行阐述. 本文是本人入门产品经理的一份练习 ...

  8. 仿抖音短视频APP源码如何开发抖音类似特效

    仿抖音短视频APP源码如何开发抖音类似特效 1.特效概览 特效列表 特效列表 2.『灵魂出窍』 抖音的实现效果如下: 灵魂出窍 我的实现效果如下: ezgif.com-rotate.gif 代码实现 ...

  9. shell date 日期格式化_抖音短视频系统开发,日期加减

    let dateTime=new Date(); this.dateFomat是对日期格式化为 yyyy - mm - dd的格式 // 减一天 dateTime = dateTime.setDate ...

最新文章

  1. excel表格制作计算机一级,计算机一级OFFICE辅导:给Excel表格添加背景音乐
  2. mysql session变量_mysql 系统变量和session变量
  3. 黄河农场谋定区位优势-农业大健康·万祥军:现代农业示范区
  4. HTML/CSS学习笔记01【概念介绍、基本标签】
  5. React with Webpack -1: 介绍Helloworld
  6. 以太坊互助保险项目Nexus Mutual新增支持Badger DAO
  7. Python基础——min/max与np.argmin/np.argmax
  8. 电子书的下载与查阅书的源码
  9. Openproj 在64位操作系统报错errno=193
  10. 100以内奇数的平方和
  11. hpm1005能扫描不能打印_惠普M1005怎么只能打印复印不能扫描了?
  12. Deep Feedforward Networks(3)
  13. 半挂式洒水车的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. 开心农场最新外挂助手下载
  15. Oracle触发器,删除一条数据的同时删除另一张表的关联数据
  16. vue移动端开启键盘 页面底部样式乱了
  17. 【代码小记】赏析《RAFT:运动属性的光流感知》
  18. 科学探索奖名单揭晓:北大数学「黄金一代」袁新意上榜,首现90后获奖人
  19. CISP证书价值​NISP证书价值|CISP和NISP含金量如何
  20. mysql 语句 简书_MySQL SQL语句

热门文章

  1. 项目管理PMP好考吗,没有经验?
  2. 站立者的心,只有努力努力再努力
  3. git 报错 destination path already exists and is not empty director
  4. win7 32/64位系统安装ug nx4.0
  5. 天堂2mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位
  6. 免费搭建企业级直播平台,破解H5Storm限制
  7. 离散数学期末复习知识点(不挂科系列)
  8. shepp logan matlab,怎么用MATLAB生成一个三维的Shepp-Logan头骨模型并保存下来,谢谢了...
  9. html如何添加web字体,html中字体如何实现加粗(方法介绍)_WEB前端开发,html,字体加粗...
  10. virtualbox导入虚拟机(ubuntu)