字体阴影
字体阴影有四个相关参数:
- android:shadowRadius:阴影半径
- android:shadowColor:阴影颜色
- android:shadowDx:水平偏移
- android:shadowDy:垂直偏移
<TextView
android:id="@+id/tvshadow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60sp"
android:textColor="#ffffffff"
android:layout_gravity="center"
android:text="Test Shadow"
android:shadowColor="#ff000000"
android:shadowRadius="10"
android:shadowDx="10"
android:shadowDy="10"
/>
需要注意的是,这几个参数只对TextView控件有效,其它的控件比如ImageView和布局控件如LinearLayout则无效。
如果需要让布局控件比如LinearLayout有阴影效果怎么办呢?
解决方案就是:制作带有阴影效果的9png图片作为背景图片。
用9png图片实现通用阴影效果
这里提供一个在线制作带有阴影效果的9png的网站:
https://inloop.github.io/shadow4android/
网站提供强大的参数设置功能,能够满足我们设置阴影png需求。
制作出来的效果:
用9png图片实现网络传输
关于9png的使用,平常我们可能会将制作好的png图片放入工程中,然后打包进apk内安装使用。
但是有需求是要求从网络获取9png图片,然后在apk的控件中显示出来。
如果这个9png图片不经过处理,直接放在网上,然后经由app在使用过程中下载下来,将这个bitmap设置成背景,那么你会惊奇的发现这个图片并没有达到9png图片的效果,而是一张普通图片,设置连9png的黑边都显示出来并拉伸了。
原因是如果放在res下的图片,经过打包后实际上是经过处理过的图片,我们可以通过解压apk来查看这个图片,会比原来的9png图片少了两个像素。
所以我们如果要从网络下载一个9png的图片,这个图片也必须经过处理,然后才能放到网上才有效果。
具体做法:
- 找到sdk下的aapt目录:比如sdk\build-tools\28.0.3;
- 运行指令:aapt.exe c -v -S C:\1 -C C:\2,其中C:\1是原始9png图片所在目录,C:\2是处理后的9png图片所在目录。需要注意的是,这两个目录不能一样,否在运行会失败。