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