<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<stroke android:color="@color/colorBlack"
android:width="2dp"
android:dashGap="0dp"
android:dashWidth="40dp"/>
<padding android:left="130dp"
/>
<solid android:color="@color/warning_stroke_color"/>
</shape>
<ImageView
android:id="@+id/logo"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="@drawable/bg"/>
然后我们会发现,what啥都没变啊。其实我们要知道是内容离边界的距离。比如我们这里换成TextView就知道了:
<TextView
android:id="@+id/logo"
android:layout_width="300dp"
android:layout_height="300dp"
android:text="aaaaaaaaaaaaaaaaaaaa"
android:background="@drawable/sdf"/>
文字距离左边padding了130dp了。
- 标签的作用: 我们知道图片的话,有自己的固有宽/高,但是像这种ShapeBitmap,没有固有宽/高,
getIntrinsicWidth/height
获取到的是-1,所以我们如果设置了标签,获取到的就是你设置的值了。
<size
android:width="100dp"
android:height="100dp"/>
InsetDrawable:
可以把其他的Drawable内嵌到自己里面,然后在可以设置四周的距离。
比如我们有时候在状态栏处,点击返回按钮,但是美工切图的返回键有点小,直接设置进去,有时候用户按返回键会按不到,一种是把ImageView
的宽高设置的大一点,另外一种可以使用这个InsetDrawable
。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/back"
android:insetLeft="20dp"
android:insetTop="20dp"
android:insetRight="20dp"
android:insetBottom="20dp"
>
</inset>
<ImageView
<?xml version="1.0" encoding="utf-8"?> </shape> <?xml version="1.0" encoding="utf-8"?> </layer-list>
我们可以查看设置了`InsetDrawable`和直接设置返回按钮图片的样子:
![](https://s2.51cto.com/images/20210917/1631867942271829.jpg)
##### ScaleDrawable:
![](https://s2.51cto.com/images/20210917/1631867942416355.jpg)
可以缩放的Drawable,效果如下:
![](https://s2.51cto.com/images/20210917/1631867943156996.jpg)
具体的使用可以参考这篇文章:[Android Drawable - Scale Drawable使用详解](
)
##### ClipDrawable:
![](https://s2.51cto.com/images/20210917/1631867944556853.jpg)
可裁剪的Drawable,效果如下:
![](https://s2.51cto.com/images/20210917/1631867944270327.jpg)
具体的使用可以参考这篇文章:[ClipDrawable让开发变得更简单](
)
![](https://s2.51cto.com/images/20210917/1631867945580691.jpg)
#### Drawable集合
![](https://s2.51cto.com/images/20210917/1631867946207690.jpg)
Drawable集合的意思是这些Drawable可以放多个Drawable,比如可以放多个图片资源在里面。
##### LayerDrawable
![](https://s2.51cto.com/images/20210917/1631867946730678.jpg)
它是一种层次化的Drawable集合,通过不同的Drawable放置在不同的层上面达到了叠加后的效果。并且下面的item覆盖上面的item。
![](https://s2.51cto.com/images/20210917/1631867947119324.jpg)
比如这个图片上的搜索框:
![](https://s2.51cto.com/images/20210917/1631867948501831.jpg)
我们可以使用LayerDrawable来实现,只需要把中间的放大镜和文字变成一个图片,比如
![](https://s2.51cto.com/images/20210917/1631867949340644.jpg)
然后背景为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"><corners android:radius="20dp"/>
<solid android:color="@color/colorWhite"/>
![](https://s2.51cto.com/images/20210917/1631867952950765.jpg)
最后使用LayerDrawable:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android”><item
android:drawable="@drawable/search_bg"/>
<item android:drawable="@drawable/search"
android:right="60dp"
android:left="60dp"
android:top="10dp"
android:bottom="10dp"
/>
效果图为:
![](https://s2.51cto.com/images/20210917/1631867953151560.jpg)
具体可以参考以下文章:
[Android Drawable - Layer Drawable使用详解](
)
[layer-list -- layer-list的基本使用介绍](
)
### 最后
**我坚信,坚持学习,每天进步一点,滴水穿石,我们离成功都很近!**
以下是总结出来的**字节经典面试题目**,包含:计算机网络,Kotlin,数据结构与算法,Framework源码,微信小程序,NDK音视频开发,计算机网络等。
# **字节高级Android经典面试题和答案**
![](https://s2.51cto.com/images/20210917/1631867953362941.jpg)
![](https://s2.51cto.com/images/20210917/1631867954670995.jpg)
**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://ali1024.coding.net/public/P7/Android/git)**
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/161825.html