Android画图学习总结(一)——类的简介

Android画图学习总结(一)——类的简介

By: 海市蜃楼 | In: Android开发

学习Android 有一段时间了,看完了Android SDK中的大部分文档,但是始终感觉自己还缺少很多,后来发现,Android SDK中只是介绍了Google自己开发的那一部分如何使用,Android中引用至Java的部分如何使用却没有说明。当然这也不是Google的职 责,但是这对我们C++程序员来说的确是缺少了很多,在这里我们将对Google“缺少的部分”并结合AndroidSDK中Reference说明来详细介绍,并不断的补充完善。

首先,如何获取 res 中的资源

数据包package:android.content.res
主要类:Resources
Android SDK中的简介:Class for accessing an application’sresources.Class for accessing an application’s resources. This sits on top ofthe asset manager of the application (accessible through getAssets()) andprovides a higher-level API for getting typed data from the assets.
其主要接口按照功能,划分为以下三部分:

getXXXX()

例如:

int getColor(int id)

Drawable getDrawable(int id)

String getString(int id)

直接获取res中存放的资源

InputStream openRawResource(int id)

获取资源的数据流,读取资源数据

void parseBundleExtras(
  XmlResourceParser parser, Bundle outBundle)

从XML文件中获取数据

Resource为每种资源提供了相应的接口来获取这种资源,除了可以直接获取资源外,还额外提供了以数据流的方式获取资源,这在以后的应用程序开发中会经常使用,那么如何获取Resources了,如下:Resources r = this.getContext().getResources();

其次,如何获取资源中的画图对象

数据包package:android.graphics.drawable
主要类:Drawable
Android SDK中的简介:A Drawable is a general abstraction for“something that can be drawn.” Most often you will deal with Drawable as thetype of resource retrieved for drawing things to the screen; the Drawable classprovides a generic API for dealing with an underlying visual resource that maytake a variety of forms.
看了以上简介,发现Drawable是个virtualclass,具体如何画图,需要具体分析Drawable的子类,例如:BitmapDrawable
Android SDK中的简介:A Drawable that wraps a bitmap and canbe tiled, stretched, or aligned. You can create a BitmapDrawable from a filepath, an input stream, through XML inflation, or from a Bitmap object. It canbe defined in an XML file with the <bitmap> element.
其主要接口如下:

BitmapDrawable()

BitmapDrawable(Bitmap bitmap)

BitmapDrawable(String filepath)

BitmapDrawable(InputStream is)

void draw(Canvas canvas)

Draw in its bounds (set via setBounds) respecting optional effects such  as alpha (set via setAlpha) and color filter (set via setColorFilter).

final Bitmap getBitmap()

final Paint getPaint()

Drawable是个抽象类,在BitmapDrawable中我们就看到位图的具体操作,在仔细看下BitmapDrawable的构造函数,我们就会发现与Resource中的openRawResource()接口是相对应的,就可以通过以下方法来获取位图:
Resources r = this.getContext().getResources();
Inputstream is = r.openRawResource(R.drawable.my_background_image);
BitmapDrawable  bmpDraw = new BitmapDrawable(is);
Bitmap bmp = bmpDraw.getBitmap();
关于Drawable深入的学习与理解,请阅读Android画图学习总结(三)——Drawable

然后,看几个常用的辅助类

  1. Paint
         数据包package:android.graphics
         Android SDK中的简介:The Paint class holds the style     and color information about how to draw geometries, text and bitmaps. 主要就是定义:画刷的样式,画笔的大小/颜色等。
  2. Typeface
         数据包 package:android.graphics
         Android SDK中的简介:The Typeface class specifies the     typeface and intrinsic style of a font. 主要就是定义:字体。

最后,核心类显示资源

数据包package:android.graphics
主要类:Canvas
Android SDK中的简介:The Canvas class holds the “draw”calls. To draw something, you need 4 basic components: A Bitmap to hold thepixels, a Canvas to host the draw calls (writing into the bitmap), a drawingprimitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colorsand styles for the drawing).
按照结构的功能,将主要接口分为以下3部分:

boolean clipXXXX()

Region区域操作:
  DIFFERENCE
  INTERSECT
  REPLACE
  REVERSE_DIFFERENCE
  UNION
  XOR

void drawXXXX()

画图函数

void rotate()
  void scale()
  void skew()
  void translate()

画布操作函数

Region在这里需要特殊说明下:Region就是一个区域,也就是画布(Canvas)中的有效区域,在无效区域上draw,对画布没有任何改变。

总结说明

在写代码前,必须先仔细看下这几个主要的类,在这里我也只是把SDK中的介绍稍微总结下,它代替不了你对SDK的详细阅读,毕竟SDK是最详细的说明文档,在后续篇幅中再深入详细的介绍。

 

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第次运行时会自动生产个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值