Android中XML绘图:Bitmap/Shape/Seletor和Layer

Android群英传笔记-Android绘图机制与处理技巧 这里写目录标题Android屏幕相关知识屏幕参数2D绘图xml绘图bitmapshape图层 Layer选择器 SelectorAndroid绘图技巧CanvasLayer图层Android图像处理-色彩特效Android图像处理-图形特效Android图像处理-画笔特效简介SurfaceView的使用 Android屏幕相关知识 屏幕参数 屏幕大小:屏幕对角线长度,用寸来衡量 分辨率:手机屏幕像素点个数,例如 720*1280 PPI:每英寸像素,又称DPI.有一些固定的DPI,就是我们熟悉的dipi,m 阅读详情

Android中XML绘图

android中xml来布局,个人认为主要考虑视图与逻辑分离,最主要的是实践mvc的开发模式,XML方式适合做可视化界面设计,而且可读性较好,java代码写UI就无法动态运行代码,在开发阶段实时渲染;这样在以后要改下视图,就不需要动逻辑部分,改改xml就可以了,或者说后面替换UI的话,没有必要跑到代码中去看哪些地方要改。

Bitmap


非常的简单且常用,例如:

android:src="@drawable/search"

这样引用资源中的图片,就可以转成Bitmap在程序中使用了。


Shape


它的作用是在XML中定义的几何形状,下面展示常用的参数:
android:shape=[“rectangle” | “oval” | “line” | “ring”]
其中rectagle矩形,oval椭圆,line水平直线,ring环形,默认是rectagle
shape中子节点的常用属性:


gradient 渐变
Android:startColor
起始颜色
Android:endColor
结束颜色
Android:angle
渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0;
Android:type
渐变的样式 liner线性渐变 radial环形渐变 sweep


solid 填充
Android:color
填充的颜色


stroke 描边
Android:width
描边的宽度
Android:color
描边的颜色
Android:dashWidth
表示’-‘横线的宽度
Android:dashGap
表示’-‘横线之间的距离


corners 圆角 (当shape=“rectagle”时使用)
Android:radius (默认是1dp)
圆角的半径 值越大角越圆
Android:topRightRadius
右上圆角半径
Android:bottomLeftRadius
右下圆角角半径
Android:topLeftRadius
左上圆角半径
Android:bottomRightRadius
左下圆角半径


padding 填充
android:bottom=”1.0dip”
底部填充
android:left=”1.0dip”
左边填充
android:right=”1.0dip”
右边填充
android:top=”0.0dip”
上面填充


size 指定大小
android:width=”1.0dp”
android:height=”1dp”


Selecter

根据不同的选定状态来定义不同的现实效果
分为四大属性:
android:state_selected 是选中
android:state_focused 是获得焦点
android:state_pressed 是点击
android:state_enabled 是设置是否响应事件,指所有事件
另:
android:state_window_focused 默认时的背景图片
引用位置:res/drawable/文件的名称.xml

<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:Android="http://schemas.android.com/apk/res/android">     
<!-- 默认时的背景图片-->      
<item Android:drawable="@drawable/pic1" />        
<!-- 没有焦点时的背景图片 -->      
<item   
   Android:state_window_focused="false"        
   android:drawable="@drawable/pic_blue"   
   />       
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->      
<item   
   Android:state_focused="true"   
   android:state_pressed="true"     
   android:drawable= "@drawable/pic_red"   
   />     
<!-- 触摸模式下单击时的背景图片-->      
<item   
   Android:state_focused="false"   
   Android:state_pressed="true"     
   Android:drawable="@drawable/pic_pink"   
   />      
<!--选中时的图片背景-->      
<item   
   Android:state_selected="true"   
   android:drawable="@drawable/pic_orange"   
   />       
<!--获得焦点时的图片背景-->      
<item   
   Android:state_focused="true"   
   Android:drawable="@drawable/pic_green"   
   />       
</selector>  

Layer

将多个图片或上面两种效果按照顺序层叠起来

以下就是右侧半弧的效果:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape
            android:shape="rectangle">
            <solid android:color="#E5930E" />
            <corners android:radius="30dp"/>
        </shape>
    </item>

    <item android:right="30dp"
        >
        <shape
            android:shape="rectangle">
            <solid android:color="#E5930E" />
        </shape>
    </item>

</layer-list>

这里写图片描述

以下可作为textview下划线的bg:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="#FAAE4C" />
        </shape>
    </item>
    <item android:bottom="3dp">
        <shape>
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>

这里写图片描述


结语

上面的这些方式是Android提供的几个强大的技能,无论是扁平化还是渐变,都能绘制。将Shape/Seletor和Layer揉合到一块儿来使用,最终达到效果。


                                                            困难方能见人品质,tks
Drawble的7种图像处理方式demo:shapelayers、scale、bitmap、等 Drawble的7种图像处理方式:shapelayers、scale、bitmap、等 立即下载

相关推荐

Android Drawable Bitmap 相互

文档中描述了Drawable Bitmap 几种换方法供初学者使用。方法都是经过实践验证的。

Android DrawableBitmap换实例详解

Android DrawableBitmap换实例详解 通常我们需要通过代码去设置图片,就需要设置图片BitmapDrawable的换,下面整理了几种方式 一、BitmapDrawable Bitmap bm=xxx; //xxx根据你的情况获取 BitmapDrawable bd=new BitmapDrawable(bm);//因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。 二、 DrawableBitmap Drawable d=xxx; //xxx根据自己的情况获取drawable BitmapDrawable bd = (Bit

Android BitmapDrawable相互换的简单代码

很多开发者表示,不知道Android的DrawableBitmap之间如何相关换。下面Android123给大家两种比较简单高效的方法。   一、BitmapDrawable 代码如下:  Bitmap bm=xxx; //xxx根据你的情况获取   BitmapDrawable bd=BitmapDrawable(bm);  Android开发网提示因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。   二、 DrawableBitmap   Bitmap对象后,可以将Drawable对象通过Android的SK库存成一个字节输出流,最终还可以保

Android GradientDrawable Bitmap

需求:最新开发,有几个渐变色的背景,因为图片比较大,为减小应用体积,用drawable资源文件来加载,然后代码Bitmap在设置背景。 实现: private Bitmap getBitmapGradient(){ Drawable drawable = mContext.getResources().getDrawable(R.drawable.background_gradient); GradientDrawable gradientDrawable = (GradientDr

孔小乐的博客 2900

布局xmlbitmap

代码: DisplayMetrics dm = activity.getResources().getDisplayMetrics(); int newWidth = dm.widthPixels; int newHeight = dm.heightPixels; View view = activity.getLayoutInflater

兜子6的博客 813

Android 12+ 选取图片并Bitmap

Android 12+ 选取图片并Bitmap

C_biubiubiu的博客 830

Android 设置bitmap、selector、shape

android中描述 形容(加载处理)图片 是通过 Bitmap这个类来操作 <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@mipmap/welcome_bg"

RenRuiTao的博客 3141

Android 小工具--圆形图片

1.CircleImageView类代码 public class CircleImageView extends androidx.appcompat.widget.AppCompatImageView { //画笔 private Paint mPaint; //圆形图片的半径 private int mRadius; //图片的宿放比例 private float mScale; public CircleImageView(Context

Rose J 的博客 590

android shape selector layer-list详解

原文地址:http://blog.csdn.net/brokge/article/details/9713041 Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到。 可以这样说,在美化控件中的作用是至关重要。 在看这篇文章之前,可以看下这个小例子:镂空按钮的实现 1.Shape 简介 作用

ArchurSpace 629

Android-第三节圆形图案及shape属性(修改圆形图片),金三银四Android高级工程师面试题整理

在这里我身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。

2301_77110865的博客 977

Android 绘图shape圆形,android开发基础作用

shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件比如imageview或textview的高宽设置成一样就是正圆,solid表示远的填充色,stroke则代表远的边框线,所以两者结合可以实现带边缘的圆,当然也可以直接加上size控制高宽,下面的代码实现效果是一个带白边的红圆。

2401_84149814的博客 855

android属性动画使用 / bitmap api / shap使用 / selector使用

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mImageView,"translationY", 0,view.getWidth()); objectAnimator.setDuration(3000); // objectAnimator.start(); ObjectAnimator objectAnimator2 = ObjectAnimator.o...

we1less的博客 405

Android 画布

一.Drawable 1.ShapeDrawable ①.shape标签对应的代码中需要强成GradientDrawable ②.

龚礼鹏的博客 922

使用layer-list绘制圆角矩形

Androidxml资源文件是一个非常强大的工具,向圆角矩形的图案,完全不用单独绘制图片文件,使用xml编写代码就完全可以实现。其实质原理是通过xml代码控制,绘制多个图层,图层堆叠而达到所想要绘制图形的效果。例如绘制一个蓝色边框矩形: 从上面看,由于白色图层面积比蓝色图层小一圈,便产生了蓝色边框矩形的效果。 这样编写的xml包含几个重要的元素: 1. layer-list: 根元素 2

RickyXE 3444

layer-list实现渐变的圆角边框

使用layer-list 实现渐变的圆角边框 效果: 思路是绘制一个背景渐变的圆角矩形、一个背景为白色的圆角矩形,相互遮盖实现以上的效果。 代码如下: item 标签中设置bottom 、left、right、top 的大小就是边框的大小 <item> <shape > <solid android:color="#4DD1AD" an...

qq_35388369的博客 805

BitmapShader解析

BitmapShader是Shader的子类,它一般通过Paint.setShader(Shader shader)来设置。它只有一个构造函数 BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY) 参数1:是用来着色的bitmap 参数2 :绘制完一个完整的bitmap后,视图剩余X轴方向的绘制方式...

zouzoutingting_的专栏 4614

Android 自定义View 使用ShapeDrawable加BitmapShader实现图片局部放大效果

一些说明: > BitmapShader中放置的Bitmap是原图的缩放后的 > ShapeDrawable的setBounds() 仅仅是设置一块shape的外矩形区,如用英语表示:size-region >ShapeDrawable中图片默认draw的原点为:相对于图片自身的坐标(0,0) > ShapeDrawable如果要对图片进行矩阵变化...

打渔还是晒网 —— stone 2847
上一篇: Android布局优化
下一篇: Android图片压缩及内存缓存
王YIYE
博客等级 码龄16年 6粉丝 35原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值