首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
select
export
dagger
bytecode
jsp
filter
window
settings
schema
数组
tags
perl
vba
cSharp
testing
iostream
command
cpython
heatmap
object
datetime
timezone
byte
frameworks
heap
metadata
list
stream
text
rsa
cookie
python2
email
triggers
chat
audio
less
scala
plugins
range
input
hashtable
function
subset
buffer
shell
version
web3
ip
const
foreach
actionscrip
javascript
integer
format
request
tree
cmd
expression
python
java
get
solr
c语言
nodejs
uri
httprequest
join
dll
include
import
bitmap
client
hashset
md5
main
copy
hashcode
config
当前位置:
开发笔记
>
编程语言
> 正文
TextView文字淡入效果
作者:klolo先生 | 来源:互联网 | 2023-10-09 19:39
一个文本渐渐地从左到右的显示。几步就可以了实现了。利用的是View的fade边缘。当然也可以自己画,可是没有成功。Java代码直接上代码:classFadeTextViewextend
一个文本渐渐地从左到右的显示。
几步就可以了实现了。利用的是View的fade边缘。当然也可以自己画,可是没有成功。
Java代码
直接上代码:
class
FadeTextView
extends
TextView {
long
delta=70l;
//步进时间
int
number" >0
;
//字符串宽度
int
widthPixels=
0
;
//字符串的显示宽度
int
wp=
4
;
//字符串的显示宽度步进
public
FadeTextView(Context context) {
super
(context);
init();
}
public
FadeTextView(Context context, AttributeSet attrs) {
super
(context, attrs);
TypedArray a=
context.obtainStyledAttributes(
attrs, R.styleable.FadeTextView);
delta=(
long
) a.getInt(R.styleable.FadeTextView_fade_txt_delta, (
int
) delta);
wp=a.getInt(R.styleable.FadeTextView_fade_txt_wp, wp);
init();
}
public
FadeTextView(Context context, AttributeSet attrs,
int
defStyle) {
super
(context, attrs, defStyle);
TypedArray a=
context.obtainStyledAttributes(
attrs, R.styleable.FadeTextView, defStyle,
0
);
delta=(
long
) a.getInt(R.styleable.FadeTextView_fade_txt_delta, (
int
) delta);
wp=a.getInt(R.styleable.FadeTextView_fade_txt_wp, wp);
init();
}
//关于delta,wp这两个属性是在attrs.xml中配置的。动画显示的速度由这两个值控制,当然要加入时间的话,也是可以。以时间为第一选择,然后才是每次显示的宽度
private
void
init() {
setSingleLine(
true
);
setHorizontalFadingEdgeEnabled(
true
);
//这两句才能显示出阴影效果。
widthPixels=
4
;
keyword" >int
) getPaint().measureText(getText().toString());
KeelLog.v(
"init.width:"
+width+
" getText().toString():"
+getText().toString());
postDelayed(mRunnable, delta);
}
@Override
public
void
setText(CharSequence text, BufferType type) {
super
.setText(text, type);
init();
}
//这个是最重要的方法,就是对TextView设置宽度,因为当一个TextView宽度不够显示出文本时,边缘会有阴影效果。当然还要设置单行的,否则是不行的。
public
void
setWidthLength(
int
pixels) {
setWidth(pixels);
}
Runnable mRunnable=
new
Runnable() {
@Override
public
void
run() {
//KeelLog.d("update:"+widthPixels+" width:"+width);
if
(width>
0
&&widthPixels
widthPixels+=wp;
setWidthLength(widthPixels);
postInvalidate();
postDelayed(mRunnable, delta);
}
else
{
//removeCallbacks(mRunnable);
}
}
};
}
attrs.xml
"FadeTextView"
>
"fade_txt_delta"
format=
"reference|integer"
/>
"fade_txt_wp"
format=
"reference|integer"
/>
如果使用xml,则不会产生阴影,而是... ,这可能要设置一些属性。
用java代码添加:
LinearLayout layout;
//=new LinearLayout(this);
layout=(LinearLayout) findViewById(R.id.layout);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setBackgroundColor(R.color.holo_green_light);
final
FadeTextView textView=
new
FadeTextView(
this
);
//textView.setWidthLength(8);
LinearLayout.LayoutParams layoutParams=
new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//layoutParams.gravity=Gravity.CENTER;
textView.setTextSize(
28
);
textView.setText(
"互联网电视"
);
layout.addView(textView, layoutParams);
就可以看效果了。
View中的画阴影的代码:这段代码不起作用。就只能用上面的笨办法来淡入显示文本了。
int
saveCount;
int
length=
40
;
//fade length
float
right;
float
top=
0
;
float
bottom;
float
fadingEdgeLength=25f;
float
rightFadeStrength=5f;
public
Paint paint;
public
Matrix matrix;
public
Shader shader;
private
void
drawTxt(Canvas canvas) {
/*setFadingEdgeLength(length);
setHorizontalFadingEdgeEnabled(true);
setFadeColor(Color.GREEN);*/
right=getRight();
bottom=getBottom();
fadingEdgeLength=getHeight();
saveCount=canvas.getSaveCount();
int
solidColor=getSolidColor();
if
(solidColor==
0
) {
final
int
flags=Canvas.HAS_ALPHA_LAYER_SAVE_FLAG;
canvas.saveLayer(right-length, top, right, bottom,
null
, flags);
}
else
{
setFadeColor(solidColor);
}
// Step 5, draw the fade effect and restore layers
final
Paint p=paint;
final
Matrix matrix=MyTextView.
this
.matrix;
final
Shader fade=shader;
final
float
fadeHeight=fadingEdgeLength;
matrix.setScale(
1
, fadeHeight*rightFadeStrength);
matrix.postRotate(
90
);
matrix.postTranslate(right, top);
fade.setLocalMatrix(matrix);
canvas.drawRect(right-length, top, right, bottom, p);
KeelLog.d(VIEW_LOG_TAG, String.format(
"top:%f,right:%f,bottom:%f,(right-length):%f,fadingEdgeLength:%f"
, top, right, bottom, right-length, fadingEdgeLength));
canvas.restoreToCount(saveCount);
}
private
void
init() {
setText(subText);
right=getRight();
bottom=getBottom();
paint=
new
Paint();
matrix=
new
Matrix();
// use use a height of 1, and then wack the matrix each time we
// actually use it.
shader=
new
LinearGradient(
0
,
0
,
0
,
1
,
0xFF000000
,
0
, Shader.TileMode.CLAMP);
paint.setShader(shader);
paint.setXfermode(
new
PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
}
其中两个重点是:canvas.saveLayer(right-length, top, right, bottom,
null
, flags); 遮罩层。就是阴影部分。
shader=
new
LinearGradient(
0
,
0
,
0
,
1
,
0xFF000000
,
0
, Shader.TileMode.CLAMP);
paint.setShader(shader);
paint.setXfermode(
new
PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
//填充方式,大概是中间空的,边缘较突出的
可是上面的代码画不出阴影。失望。
如果有同学用这段代码画出来了,希望回复。
textview
view
text
java
android
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
text
如何在Android中利用TextView对字体颜色进行更改
如何在Android中利用TextView对字体颜色进行更改?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希 ...
[详细]
蜡笔小新 2023-09-03 18:11:26
text
Day3.2--Android简单UI控件之TextView的高级使用--SpannableString的使用
上节课,介绍了TextView的简单使用,包括在xml文件静态设置TextView的属性和文本内容信息,以及在java代码中动态的改变一个TextView所要显示的内容。掌握了基本使用之后,我们来看 ...
[详细]
蜡笔小新 2023-09-01 14:27:27
text
在java源文件中指定TextView文本显示内容
在java源文件中指定TextView文本显示内容在java源文件当中指定控件的文本显示内容,我们需要得到一个控件的对象即TextView的对象,如果在java源文件中我们想要得到这个指定的控件,我们 ...
[详细]
蜡笔小新 2023-08-29 17:17:15
text
android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
vlist2.xml代码:<?xmlversion1.0encodingutf-8?><LinearLayoutxmlns:androi ...
[详细]
蜡笔小新 2023-08-23 13:55:23
text
Android MARS学习笔记:Intent基础与应用
本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ...
[详细]
蜡笔小新 2024-12-24 12:23:09
text
Android 自定义绘图板应用
本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ...
[详细]
蜡笔小新 2024-12-23 10:12:53
text
深入理解JavaScript的作用域链与闭包
本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ...
[详细]
蜡笔小新 2024-12-23 01:27:41
text
Android TextView跑马灯效果
AndroidTextView跑马灯效果效果图TextView跑马灯继承TextView重写isFocused方法还有配置singline属性第一种方式:XML布局为:<?xmlversio ...
[详细]
蜡笔小新 2023-09-24 13:58:15
text
【Android每日一讲】2012.11.09 EditText与TextView共舞 - setOnKeyListener事件
1.范例说明EditTextWidget设计的初衷是为了等待User输入而准备的,那么在User输入的同时,又该如何拦截所输入的文字呢?Android的多数Widget都有 ...
[详细]
蜡笔小新 2023-09-24 13:17:40
text
基础二:为什么Button,ImageButton有焦点,textview,imageview没有焦点
我们在电视或者手机上开发的时候,经常会遇到如下情况,在屏幕上布局了多个TextView,ImageView,ImageBut ...
[详细]
蜡笔小新 2023-09-17 17:41:34
text
android TextView 控件居右显示
最近工作需要开始学习android一个简单的TextView控件居右显示都比较麻烦Xml代码<TextView ...
[详细]
蜡笔小新 2023-09-15 05:46:59
text
实现可点击展开的 TextView
概述Android开发过程中,经常遇到Textview展示不完全的情况。遇到此情况,通常的处理是:方案一Textview添加android:ellipsize属性,让展示不 ...
[详细]
蜡笔小新 2023-09-11 14:03:25
text
Android 开发中根据搜索内容实现TextView中的文字部分加粗
Android开发中根据搜索内容实现TextView中的文字部分加粗-实现方式没有引入任何依赖,轻量级实现需求效果最近遇到一个需求,需要做一个搜索功能。搜索的内容需要加粗显示。完成 ...
[详细]
蜡笔小新 2023-08-31 13:38:22
text
Android如何自定义TextView实现文字图片居中显示
这篇文章主要介绍Android如何自定义TextView实现文字图片居中显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们先来分 ...
[详细]
蜡笔小新 2023-08-30 17:49:41
text
android TextView设置中文字体加粗实现方法
androidTextView设置中文字体加粗实现方法-英文设置加粗可以在xml里面设置:复制代码代码如下:android:text英文还可以直接在Stri ...
[详细]
蜡笔小新 2023-08-29 22:49:55
klolo先生
这个家伙很懒,什么也没留下!
Tags | 热门标签
select
export
dagger
bytecode
jsp
filter
window
settings
schema
数组
tags
perl
vba
cSharp
testing
iostream
command
cpython
heatmap
object
datetime
timezone
byte
frameworks
heap
metadata
list
stream
text
rsa
RankList | 热门文章
1
关闭Linux系统下不必要的服务
2
linux之chm
3
解决Linux下Oracle Tomcat 8080端口冲突
4
非常实用 Linux系统开机提速我有绝招!
5
db2 linux下恢复nfs上的备份出错,请教高手
6
在SUSE Linux Server上配置DB2
7
Ubuntu 12.04 安装 PostgreSQL 9.1 及 rails 的设置
8
Linux下应急响应流程与步骤
9
Ubuntu及Windows上测试Memcached服务
10
利用Kylix3从Windows迁移到Linux
11
Ubuntu下手动编译安装PostgreSQL9.1和pgAdmin3
12
3GSM: Access展最新Linux平台操作系统(图)
13
Linux知识宝库:Kylix经典十大难题解决方法
14
配置OracleDesigner的Repository
15
加密存储过程,授于其它用户执行
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有