常用控件应用之文本框(TextView)特效

这篇博客详细介绍了Android中TextView的各种特效,包括跑马灯效果、阴影效果、html标签样式、自动链接处理、动画效果(旋转、透明度、缩放、移动)、霓虹灯效果以及包含图片的展示,并提供了关键代码示例和完整的项目目录结构。还提到了连续动画的实现方法。
摘要由CSDN通过智能技术生成


 

1.TextView之跑马灯效果

     android:ellipsize属性使用之跑马灯效果
        android:ellipsize
        设置当文字过长时,该控件该如何显示。有如下值设置:
        "start"—–省略号显示在开头
        "end"——省略号显示在结尾
        "middle"—-省略号显示在中间
        "marquee" ——以跑马灯的方式显示(动画横向向左移动)
        
        布局文件中给TextView加入如下属性即可:
        android:ellipsize="marquee" 
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true" 
        android:focusableInTouchMode="true"
复制代码
<!--
        布局文件中设置如下(完整代码稍后给出)
-->
  <TextView
        android:id="@+id/marquee_effect"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="@string/marquee_effect" />
复制代码

      如果一个页面想实现多个TextView同时跑马灯效果解决方案:给要跑动的textview加上如下代码就行了

textview.setSelected(true);

2.TextView之阴影效果(可在布局文件里加入如下属性进行设置也可通过程序设置)
        android:shadowDx——设置阴影横向坐标开始位置(相对于文本内容)
        android:shadowDy——设置阴影纵向坐标开始位置(相对于文本内容)
        android:shadowRadius——设置阴影的半径
        android:shadowColor——指定文本阴影的颜色

//关键代码(完整代码稍后给出)
textview.setShadowLayer(2.5f, 15, -10, 0xff00ff00);

3.html标签设置样式效果

  补充:

  textView.setAutoLinkMask(Linkify.WEB_URLS);// 当文本内容中包含超链接格式的文本时,自动转换成超链接样式,点击会自动跳转到指定的网页
  textView.setAutoLinkMask(Linkify.PHONE_NUMBERS);//自动转手机号码点击它可进入系统拨号界面
  textView.setAutoLinkMask(Linkify.EMAIL_ADDRESSES);//自动转邮件地址点击它可发送邮件(要提前设置好自己的电子邮件)
  textView.setAutoLinkMask(Linkify.MAP_ADDRESSES);//自动转街道地址点击它可查看位置(前提已安装了google地图)
  textView.setAutoLinkMask(Linkify.ALL);//包括上面4种情况

  关键代码(完整代码稍后给出):

复制代码
     TextView tv = (TextView) findViewById(R.id.fromhtml_effect);
        StringBuffer sb = new StringBuffer();
        sb.append("<h1><font color='#ff0000'>Html标签方式:</font></h1>");
        sb.append("<h6><b><i><font color='#00ff00'><a href='http://www.cnblogs.com/bravestarrhu/'>");
        sb.append(getString(R.string.fromhtml_effect));
        sb.append("</a></font></i></b></h6>");
        tv.setText(Html.fromHtml(sb.toString()));
        tv.setMovementMethod(LinkMovementMethod.getInstance());// 这句很重要,使超链接<a href>起作用
复制代码

4.TextView之动画效果(rotate旋转、alpha透明度、scale缩放、translate移动)

实现动画需要在res/anim目录下新建对应的xml文件(稍后给出)

  关键代码(完整代码稍后给出):

复制代码
     TextView tv = null;
     // TextView旋转 动画效果
        tv = (TextView) findViewById(R.id.rotate);
        
        Animation mAnimationRight = AnimationUtils.loadAnimation(
                TextViewEffectActivity.this, R.anim.rotate);
        tv.setAnimation(mAnimationRight);
        
        // TextView透明度动画效果
        tv = (TextView) findViewById(R.id.alpha);
        mAnimationRight = AnimationUtils.loadAnimation(
                TextViewEffectActivity.this, R.anim.alpha);
        tv.setAnimation(mAnimationRight);
        
        // TextView缩放动画效果
        tv = (TextView) findViewById(R.id.scale);
        mAnimationRight = AnimationUtils.loadAnimation(
                TextViewEffectActivity.this, R.anim.scale);
        tv.setAnimation(mAnimationRight);
        
        // TextView移动动画效果
        tv = (TextView) findViewById(R.id.translate);
                mAnimationRight = AnimationUtils.loadAnimation(
                        TextViewEffectActivity.this, R.anim.translate);
        tv.setAnimation(mAnimationRight);
复制代码

5.TextView之霓虹灯效果

采用timer+TimerTask+Handler实现

主要用到SpannableStringBuilder对象

关键代码(完整代码稍后给出):

复制代码
// 霓虹灯效果(此段代码会使"光"变红色)
String wholeContent = "欢迎光临";
SpannableStringBuilder spannable = new SpannableStringBuilder(
                wholeContent);
spannable.setSpan(new ForegroundColorSpan(Color.RED), 2,
                    3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); // 设置指定位置文字的颜色(索引0开始)
复制代码

6.TextView之包含图片的效果

实现步骤(1.构建ImageGetter;2.直接使用append进行追加)
        关键代码(完整代码稍后给出):

复制代码
     TextView tv = (TextView) findViewById(R.id.image_effect);
        tv.setText(R.string.image_effect);
        // 通过HTML标记获得res目录下指定的图片
        ImageGetter imageGetter = new ImageGetter() {
            @Override
            public Drawable getDrawable(String source) {
                int id = Integer.parseInt(source);
                // 根据id从资源文件中获取图片对象
                Drawable d = getResources().getDrawable(id);
                d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
                return d;
            }
        };

        tv.append(Html.fromHtml("<img src='" + R.drawable.log + "'/>",
                imageGetter, null));
复制代码

上图:

                                      

    目录结构如下:

                                                        

完整代码:

1>清单文件AndroidManifest.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bravestarr.app.textvieweffect"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TextViewEffectActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
复制代码

2>main.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!--
         android:ellipsize属性使用之跑马灯效果
        android:ellipsize
        设置当文字过长时,该控件该如何显示。有如下值设置:
        "start"—–省略号显示在开头
        "end"——省略号显示在结尾
        "middle"—-省略号显示在中间
        "marquee" ——以跑马灯的方式显示(动画横向向左移动)
        
        关键代码:
        android:ellipsize="marquee" 
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true" 
        android:focusableInTouchMode="true"
        
                        如果一个页面想实现多个TextView同时跑马灯效果解决方案:代码中给要跑动的textview加上textview.setSelected(true);就行了

    -->

    <TextView
        android:id="@+id/marquee_effect"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="@string/marquee_effect" />

    <!--
         TextView之阴影效果
        android:shadowDx——设置阴影横向坐标开始位置(相对于文本内容)
        android:shadowDy——设置阴影纵向坐标开始位置(相对于文本内容)
        android:shadowRadius——设置阴影的半径
        android:shadowColor——指定文本阴影的颜色
    -->

    <TextView
        android:id="@+id/shadow_effect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true" />

    <!-- html设置样式效果 -->

    <TextView
        android:id="@+id/fromhtml_effect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true" />

    <!-- 动画效果 -->

    <TextView
        android:id="@+id/alpha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/alpha_animation_effect"
        />
    <TextView
        android:id="@+id/rotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/rotate_animation_effect"/>
    <TextView
        android:id="@+id/scale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/scale_animation_effect"/>
    <TextView
        android:id="@+id/translate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/translate_animation_effect"/>
    <!-- 霓虹灯效果 -->

    <TextView
        android:id="@+id/neonlights_effect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <!-- 包含图片的效果 -->

    <TextView
        android:id="@+id/image_effect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
复制代码

3>strings.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">TextView效果集锦</string>
    <string name="marquee_effect">跑马灯效果</string>
    <string name="shadow_effect">阴影效果</string>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值