Android控件阴影效果的几种实现方法

字体阴影

字体阴影有四个相关参数:

  1. android:shadowRadius:阴影半径
  2. android:shadowColor:阴影颜色
  3. android:shadowDx:水平偏移
  4. 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的图片,这个图片也必须经过处理,然后才能放到网上才有效果。

具体做法:

  1. 找到sdk下的aapt目录:比如sdk\build-tools\28.0.3;
  2. 运行指令:aapt.exe c -v -S C:\1 -C C:\2,其中C:\1是原始9png图片所在目录,C:\2是处理后的9png图片所在目录。需要注意的是,这两个目录不能一样,否在运行会失败。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ddnosh/article/details/100746709