导航:首页 > 操作系统 > android创建drawable

android创建drawable

发布时间:2023-02-23 07:36:40

① 如何在android Studio中创建一个selector.xml文件

1、selector.xml属于drawable文件夹下的用法,创建该文件时,首先在res文件夹下新建drawable文件夹

2、点击drawable文件夹,鼠标右键"New——>Drawable resource file",输入文件名,选择默认根标签:selector

3、例子:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_red_corners_button_pressed"
android:state_pressed="true"/>
<item
android:drawable="@drawable/shape_red_corners_button"
android:state_pressed="false"/>
</selector>

② androidstudio怎么创建drawable

右键res ->new resource directory 在resource type 选择drawable 即可

③ Android绘图基础--Canvas和Drawable

Github链接

画2D图形有两种方法:

Canvas实际上是封装了各种draw方法的类,调用draw方法把图形绘制到底层的Surface上,即绘制在Window上。

这个例子中构造了两个Canvas和一个Bitmap,分别调用其draw方法,先是mCanvas往Bitmap里绘制一个方块,再在onDraw方法内调用canvas.drawBitmap绘制这个方块。

思考一个问题,为什么mCanvas需要设置Bitmap?

很简单,因为它没有持有一块内存地址,自然没法绘制。来看一下draw的起点ViewRootImpl(软件绘制,不开启硬件加速下)。

这个通过mSurface.lockCanvas返回的Canvas是View.draw的canvas变量,所以当1,2情况时,Canvas都持有一个Bitmap,指向共享内存里的某一小块,当调用Canvas.draw方法时就能绘制出东西。但对于自定义Canvas来说并不是,即使设置一个Bitmap和绘制了Bitmap,但不往共享内存上写,屏幕上是不会显示的,SurfaceView同理,通过Surface.lockCanvas获取持有共享内存的Canvas,绘制完毕后调用Surface.unlockCanvasAndPost把绘制内容显示到surface上并release掉Canvas。

顺带一提Canvas.save和Canvas.restore方法,如下Demo

效果图如

画的是三个颜色和旋转角度都不同的小方形。

步骤1把默认坐标系旋转20°,画出第一个蓝色的方形,步骤2保存当前的matrix(旋转了20°),继续旋转20°,此时坐标系已经旋转了40°,画出第二个黄色的方块,步骤3,恢复上一步保存的matrix(旋转了20°),此时坐标系还是旋转了20°,步骤4,再旋转40°,此时坐标系旋转了60°,画出第三个黑色方块。

Canvas.save用于保存当前matrix和clip,Canvas.restore用于恢复上次保存的matrix和clip。

Drawable是一个能画出来的物体的抽象,使用前需要调用setBounds确定位置和大小,通过getIntrinsicHeight和getIntrinsicWidth取到实际大小。Drawable可以有几种形式存在:Bitmap、Nine Patch、Vector、Shape、Layers等。

从Resource.getDrawable会判断是否.xml结尾,不是的话走6,7步,如果从xml中读取,需要getResource.getDrawable -> ResourceImpl.loadDrawableForCookie -> drawable.createFromXml -> DrawableInflater.inflateFromXmlForDensity -> drawable.inflateFromTag

看一下Shape实现类GradientDrawable的inflate实现,读取各项属性并赋值,到draw方法。

调用canvas.drawRect把mRect画出来,而mRect的赋值在ensureValidRect。[图片上传失败...(image-a25af0-1515826613001)]

bounds在哪里设置的?答案是ImageView.updateDrawable内,会调用Drawable.getIntrinsicHeight赋值(从xml中size属性读取),再调用configureBounds -> setBounds,如果使用的不是ImageView,一定要在draw之前 调用setBounds ,否则size就会出错。

回到loadDrawableForCookie,再看一下6,7步加载图片的过程,通过AssetManager读取图片流数据,通过Drawable.createFromResourceStream这个我们经常使用的方法获取到Drawable。

取到屏幕密度之后调用BitmapFactory.decodeResourcesStream,计算密度后调用native创建Bitmap,感兴趣的同学可以看下更具体的分析文章(如 理解Bitmap )。

本文探究了两点

Android 7.1.1 源码

Android 官方文档, Canvas and Drawable , Drawable 等

④ Android Studio怎么新建selector的xml文件

1、selector.xml属于drawable文件夹下的用法,创建该文件时,首先在res文件夹下新建drawable文件夹
2、点击drawable文件夹,鼠标右键"New——>Drawable resource file",输入文件名,选择默认根标签:selector
3、例子:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_red_corners_button_pressed"
android:state_pressed="true"/>
<item
android:drawable="@drawable/shape_red_corners_button"
android:state_pressed="false"/>
</selector>

⑤ android 怎么生成drawable

通过 Resources 类来获得项目资源 Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.xxx); 二. 从 XML 文件来定义图..Android中Drawable分类汇总_冶金/矿山/地质_工程科技_专业资料。Android中Drawable分类汇总And左可id把 制的对象抽象 D左awab从e, 的图形图像资源就代...

⑥ 如何玩转Android矢量图VectorDrawable

创建Vector Drawable
从相似角度来看,VectorDrawable与标准SVG图形都是利用path值绘制完成的。不过如何利用SVG path绘制图形并不在本篇文章的探讨范围之内,大家可以点击此处从W3C网站处获取必要的说明资料。在本文当中,我们只需要了解到path标签的作用是进行图形绘制即可。让我们首先从SVG文件入手,看看以下图形是如何被绘制出来的:
这一图形共由五个主要部分所组成:
一个圆角四边形作为CPU主体,该四边形由两条拱状弧线构成。
四组各自包含五根线条的图形,用于充当CPU的外延线路。

虽然看起来有点繁杂,但大家其实用不着纠结于以上代码的具体含义,而且这完全不会影响到我们接下来要进行的VectorDrawable绘制工作。不过需要强调的是,我将前面提到的五大图形组成部分在代码中作为独立的区块来处理,这是为了增强代码内容的可读性。

⑦ 如何使用Android的VectorDrawable类绘制矢量图

绘制矢量图形非难事——如何使用Android的VectorDrawable类
内容概述
尽管Android系统并不能够直接支持SVG(即可缩放矢量图形),但Lollipop版本却引入了一个名为VectorDrawable的新类,其允许设计人员及开发人员以纯代码方式生成类似的绘制效果。
在今天的文章中,我们将共同学习如何利用XML文件创建一个VectorDrawable,并将其以动画方式显示在自己的项目当中。这项功能只能在运行有Android 5.0或者更高版本的设备上实现,而且目前还不具备任何支持库实现。本篇教程中的相关源文件可以通过GitHub网站获取。
1. 创建Vector Drawable
从相似角度来看,VectorDrawable与标准SVG图形都是利用path值绘制完成的。不过如何利用SVG path绘制图形并不在本篇文章的探讨范围之内,大家可以点击此处从W3C网站处获取必要的说明资料。在本文当中,我们只需要了解到path标签的作用是进行图形绘制即可。让我们首先从SVG文件入手,看看以下图形是如何被绘制出来的:
这一图形共由五个主要部分所组成:
一个圆角四边形作为CPU主体,该四边形由两条拱状弧线构成。
四组各自包含五根线条的图形,用于充当CPU的外延线路。

⑧ Android如何由Uri创建Drawable

1、首先需根据URL地址获取图片,如下所示,urladdr即为图片地址,返回Drawable对象:
private Drawable loadImageFromNetwork(String urladdr) {
Drawable drawable = null;
try{
drawable = Drawable.createFromStream(new URL(urladdr).openStream(), "image.jpg");
}catch(IOException e){
Log.d("test",e.getMessage());
}
return drawable;
}
2、获取到图片后,需要更新主线程UI资源,考虑到时间以及界面反应延迟等,所以采用线程加以处理,如下图所示:
new Thread(new Runnable(){
Drawable drawable = loadImageFromNetwork(urladdress);
@Override
public void run(){
image.post(new Runnable(){
@Override
public void run(){
image.setImageDrawable(drawable);
}
});
}

private Drawable loadImageFromNetwork(String urladdr) {
//... 略(如 1 中所示)
}
}).start(); //线程启动

⑨ android studio 怎样 创建 drawable-xxhdpi 目录

  1. 找到res目录


  2. 其实在studio环境下开发 不需要创建这个目录,可以直接把图片放在mipmap-xxhdpi下,按照步骤3和4能找到这个目录
阅读全文

与android创建drawable相关的资料

热点内容
海南压缩机在哪里 浏览:491
电脑文件夹清晰的文件结构 浏览:839
如何把苹果手机的app转到安卓 浏览:305
java同步并发 浏览:249
fw压缩图片 浏览:258
淘宝申请源码靠谱吗 浏览:874
androidupdater 浏览:635
c2d游戏源码大全可复制版 浏览:771
电脑怎样重置网关命令 浏览:411
winftplinux 浏览:335
推特app界面如何设置成中文 浏览:452
太空工程师转子编程属性 浏览:32
windowscmd关机命令 浏览:342
云桌面只要服务器装一套软件 浏览:247
电脑右键按到什么导致文件夹全屏 浏览:454
我的世界如何制造服务器主城 浏览:365
linuxssh连不上 浏览:297
永宏plc用什么编程电缆 浏览:371
win激活命令行 浏览:886
新手学电脑编程语言 浏览:893