Android TextView加上阴影效果

  <TextView
   android:id="@+id/test_shadow"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="60sp"
   android:textColor="#ffffffff"
   android:shadowColor="#ff000000"
   android:text="Test Shadow"
   android:layout_gravity="center"
   android:shadowRadius="1"
   android:shadowDx="5"
   android:shadowDy="5"
   />

<TextView
   android:id="@+id/test_shadow2"
   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="5"
   android:shadowDx="5"
   android:shadowDy="5"
   />

<TextView
   android:id="@+id/test_shadow2"
   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="5"
   android:shadowDy="5"
   />

字体阴影需要四个相关参数:

1. android:shadowColor:阴影的颜色
2. android:shadowDx:水平方向上的偏移量
3. android:shadowDy:垂直方向上的偏移量

4. Android:shadowRadius:是阴影的的半径大少

最好这4个值都一起设计

shadowColor这个属性就不多说了,android:shadowDx跟android:shadowDy

为了更清楚的演示就做个试验,分三组xml布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ff895544" >

     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#ffffffff"
            android:shadowColor="#ff000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowRadius="1"
            android:shadowDx="0"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            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="1"
            android:shadowDx="10"
            android:shadowDy="10"
            />

        <TextView
            android:id="@+id/test_shadow3"
            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="1"
            android:shadowDx="30"
            android:shadowDy="30"
            />

</LinearLayout>

dx  dy 分别为   (0 , 0) , (10 , 10 ) , (30 , 30)

结果如下:

现在更加清楚了吧!

下一个属性是android:shadowRadius  是阴影的的半径大少

对于此属性进行6组试验:

dx  dy 都是 30  shadowRadius  分别为: 0 , 0.01 , 1 , 2 , 5 , 10

结果如下:

从结果分析:

1 这个值为0的话是不会显示的

2 值越大,阴影就越大,而且越模糊

到现在应该都清楚这4个值会影响什么效果了,经验丰富的从属性名字就大概知道是什么意思了。

现在回到正常阴影的效果:

1.可以把shadowRadius  变大来实现阴影模糊,使得看起来更加的自然:

代码:

调节shadowRadius来确定最适合自己的阴影

2.调试dx  跟 dy来改变光源,使阴影偏向不同的方向 跟  距离

如果光源是在左边,那么dx 是为正的,

光源在最右边,那么dx就是负

光源在上  那么dy 为 正

光源在下, 那么dy 为 负

那么左上 , 右下 就是。。。。。。

dx  跟 dy 的正负调节方向, 其值的大少影响距离 ,dx 跟 dy 的 比值 就影响光源的角度

 <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#ffffffff"
            android:shadowColor="#ff000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowRadius="1"
            android:shadowDx="5"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            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="1"
            android:shadowDx="-5"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            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="1"
            android:shadowDx="0"
            android:shadowDy="5"
            />

        <TextView
            android:id="@+id/test_shadow3"
            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="1"
            android:shadowDx="0"
            android:shadowDy="-5"
            />

带一点浮雕效果的,把dx  dy都设置较小的值

现在三组 设置为 (0.2 , 0.2) , (1 , 1) , (2 , 2)

光圈效果:

把dx  dy设置为0 , Raduis位置较大就行了,字体颜色跟阴影颜色要协调(建议使用相同,相近,相差太大就难看比如黑色跟白色)

试验代码:

<TextView
            android:id="@+id/test_shadow"
            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="#ff00ff00"
            android:shadowRadius="1"
            android:shadowDx="0"
            android:shadowDy="0"
            />

     <TextView
            android:id="@+id/test_shadow2"
            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="#ffee00ff"
            android:shadowRadius="2"
            android:shadowDx="0"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            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="#ffeedd00"
            android:shadowRadius="5"
            android:shadowDx="0"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            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="#ff335824"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />

这样看起来还算好看把

荧光灯的效果: 把把dx  dy设置为0 , Raduis位置较大就行了,最重要的事字体颜色 跟背景颜色一样(或者非常相近)

如果再把dx  跟  dy再设置一下的话 就会变成这样的dx dy 分别为 (1 ,1) , (2 , 2) , (5 , 5) ,(10 , 10)

上面使用的背景色跟字体都是为(#ff895544) 那么我们把字体设置为相近(#ff784433)的那么结果为:

代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ff895544" >

     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#ff784433"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ff00ff00"
            android:shadowRadius="1"
            android:shadowDx="1"
            android:shadowDy="1"
            />

     <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#ff784433"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ffee00ff"
            android:shadowRadius="2"
            android:shadowDx="2"
            android:shadowDy="2"
            />

        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#ff784433"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ffeedd00"
            android:shadowRadius="5"
            android:shadowDx="5"
            android:shadowDy="5"
            />

        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#ff784433"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ff335824"
            android:shadowRadius="10"
            android:shadowDx="10"
            android:shadowDy="10"
            />
</LinearLayout>

结果就是:

  这个更明显一点

再把dx  dy 都设置为0

结果:

颜色混合:主要是修改字体颜色的alpha值

代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ff000000" >

     <TextView
            android:id="@+id/test_shadow"
            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="#ffffff00"
            android:shadowRadius="5"
            android:shadowDx="0"
            android:shadowDy="0"
            />
     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#afffffff"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ffffff00"
            android:shadowRadius="5"
            android:shadowDx="0"
            android:shadowDy="0"
            />
     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#9fffffff"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ffffff00"
            android:shadowRadius="5"
            android:shadowDx="0"
            android:shadowDy="0"
            />
     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#6fffffff"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ffffff00"
            android:shadowRadius="5"
            android:shadowDx="0"
            android:shadowDy="0"
            />
     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#3fffffff"
            android:layout_gravity="center"
            android:text="Test Shadow"
            android:shadowColor="#ffffff00"
            android:shadowRadius="5"
            android:shadowDx="0"
            android:shadowDy="0"
            />

</LinearLayout>

果:  可以让阴影颜色现在显示在字体颜色中

代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ff000000" >

    <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#cc000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#aa22ff22"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />

     <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#aa000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#aa22ff22"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />
      <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#77000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#aa22ff22"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />
       <TextView
            android:id="@+id/test_shadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#33000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#aa22ff22"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#33000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#aaffffff"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />

        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#55000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#ffffffff"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />
        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#77000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#ffffffff"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />
        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#99000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#ffffffff"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />
        <TextView
            android:id="@+id/test_shadow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="60sp"
            android:textColor="#aa000000"
            android:text="Test Shadow"
            android:layout_gravity="center"
            android:shadowColor="#ffffffff"
            android:shadowRadius="10"
            android:shadowDx="0"
            android:shadowDy="0"
            />

</LinearLayout>

通过改变   字体背景色, 字体颜色  字体阴影色 阴影半径 dx  dy alpha  就可以实现这么多种效果(当然还有更多的效果,主要是颜色搭配)

原来textView也可以这么美,完全不需要使用图片

时间: 2024-10-10 17:08:33

Android TextView加上阴影效果的相关文章

Android项目实战(三十六):给背景加上阴影效果

原文:Android项目实战(三十六):给背景加上阴影效果 圆角背景大家应该经常用: 一个drawable资源文件  里面控制corner圆角 和solid填充色 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="@dimen/dp_2"></corners> <solid android:c

android之字体阴影效果

今天刚刚好做了个字体阴影的效果,感觉加上了阴影的效果立体感十足啊!写了个简单的demo与大家分享下!主要是以下四个属性 android:shadowColor  阴影的颜色  android:shadowDx       横向阴影,其值负数是往左,正数是往右  android:shadowDy       竖直方向,其值负数是往左,正数是往右  android:shadowRadius   阴影的半径 代码如下: 复制内容到剪贴板 代码: <LinearLayout xmlns:android=

android TextView设置删除线,超链接,颜色和字体等说介绍

要给 TextView 加上特殊效果,方式主要有几种: 第一种,自动应用效果,使用 android:autolink 属性,如: Java代码   <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="match_parent" android:layout_heig

Android TextView里直接显示图片的三种方法

方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般如果字体是在图片上重叠的推荐这样写.时间关系,这个不付源码了. 方法二:利用TextView支持部分Html的特性,直接用api赋图片.代码如下: //第一种方法在TextView中显示图片 String html = "<img src='" + R.drawable.circle + "'/>"; ImageGetter imgGett

Android TextView 横向滚动(跑马灯效果)

Android TextView 中当文字比较多时希望它横向滚动显示,下面是一种亲测可行的方法. 效果图: 1.自定义TextView,重写isFocused()方法返回true,让自定义TextView一直处于获取焦点状态. package com.example.shen.marqueedemo; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView;

Android TextView 添加下划线的几种方式

总结起来大概有5种做法: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值, 如 果是所有的类型都出来就是android:autoLink="all".当然也可以在java代码里 做,textView01.setAutoLinkMask(Linkify.ALL); 2.将要处理的文字写到一个资源文件,如string.xml,然后的java代码里引用(直接写在代码了是不可行的,会直接把文字都显示处理) 3

Android TextView内容过长加省略号,点击显示全部内容

在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中: android:ellipsize="end"   省略号在结尾 android:ellipsize="start" 省略号在开头 android:ellipsize="middle"   省略号在中间 android:ellipsize="marquee"  跑马灯 最好加一个TextView显示行数的约束,例如:

android TextView Input 实例

<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_heig

android textview xml 属性设置

 android:ems 设置TextView的宽度为N个字符的宽度. android:maxems 设置TextView的宽度为最长为N个字符的宽度.与ems同时使用时覆盖ems选项. android:minems 设置TextView的宽度为最短为N个字符的宽度.与ems同时使用时覆盖ems选项. android:maxLength 限制输入字符数.如设置为5,那么仅可以输入5个汉字/数字/英文字母. android:lines 设置文本的行数,设置两行就显示两行,即使第二行没有数据.