首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
import
netty
header
httpclient
web
dll
shell
client
include
blob
config
web3
eval
list
erlang
filter
ip
callback
version
main
vba
future
join
function
match
metadata
const
heatmap
cPlusPlus
dockerfile
timestamp
utf-8
perl
testing
grid
cSharp
hash
settings
split
cookie
datetime
input
io
integer
require
keyword
cmd
golang
hook
window
dagger
schema
actionscrip
loops
chat
timezone
php7
frameworks
php5
lua
solr
audio
case
python
rsa
cpython
ascii
instance
default
nodejs
python3
emoji
replace
substring
triggers
vbscript
search
tree
process
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
main
android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
在Android中Spinner就是下拉菜单和AutoCompleteTextView自动显示的样式,它相当于HTML中的<select>标签。Android中提供的SpinnerWid ...
[详细]
蜡笔小新 2023-09-24 17:55:24
ip
优化ListView性能
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
callback
Android 渐变圆环加载控件实现
本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ...
[详细]
蜡笔小新 2024-12-27 13:34:19
import
Android LED 数字字体的应用与实现
本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ...
[详细]
蜡笔小新 2024-12-27 10:34:22
version
为 Android TextView 添加圆形边框的简单方法
本文介绍了如何通过设置背景形状来轻松地为 Android 的 TextView 添加圆形边框。我们将详细讲解 XML 代码的配置,包括圆角、描边和填充等属性。 ...
[详细]
蜡笔小新 2024-12-23 13:14:33
version
解决Android设备上草书字体显示问题
本文探讨了在特定Android版本和设备上,通过XML定义的草书字体(cursive)未能正确显示的问题,并提供了可能的解决方案。 ...
[详细]
蜡笔小新 2024-12-05 20:23:54
version
android TextView 控件居右显示
最近工作需要开始学习android一个简单的TextView控件居右显示都比较麻烦Xml代码<TextView ...
[详细]
蜡笔小新 2023-09-15 05:46:59
match
Android 自定义控件起步:自定义TextView
转载至:http:blog.csdn.netlmj623565791articledetails24252901不过对原作进行了相关细节优化,所以才有此文..首先我们看一 ...
[详细]
蜡笔小新 2023-09-13 14:11:13
eval
Android TextView 属性 textsize 的单位是什么?
首选我们找到源码中的TextView找到textsize属性一个int类型默认值为15初使化自定义属性:我们看一个getDeimensionPixelSiz ...
[详细]
蜡笔小新 2023-09-12 20:38:44
ip
实现可点击展开的 TextView
概述Android开发过程中,经常遇到Textview展示不完全的情况。遇到此情况,通常的处理是:方案一Textview添加android:ellipsize属性,让展示不 ...
[详细]
蜡笔小新 2023-09-11 14:03:25
ip
Android TextView和EditText属性详解
TextView属性详解:autoLink设置 是否当文本为URL链接email电话号码map时,文本显示为可点击的链接。可选值(nonewebemailphonema ...
[详细]
蜡笔小新 2023-09-10 15:59:56
ip
在Android应用中显示网址 - Display URL in an Android app
IamtryingtodisplaythecontentofanURLinmyAndroidapplicationinsteadofopeningitinbrow ...
[详细]
蜡笔小新 2023-09-10 14:45:53
ip
Android TextView 设置多种颜色
关键词Android、TextView、多种颜色摘要由于项目开发需要,一个TextView为了强调内容,需要显示不同的字体颜色和大小效果图TextView效果图.png方法一int ...
[详细]
蜡笔小新 2023-09-09 12:10:23
ip
Android TextView预渲染研究
AndroidTextView预渲染研究-Android中的TextView是整个framework中最复杂的控件之一,负责Android中显示文本的大部分工作,framwork中 ...
[详细]
蜡笔小新 2023-09-05 15:50:15
version
Android TextView利用measureText自适应文本字体大小宽度
AndroidTextView利用measureText自适应文本字体大小宽度常常有这种情况,UI设计师限定一个文本TextView的宽度值比如80dip,但是该文本长度 ...
[详细]
蜡笔小新 2023-09-04 20:39:43
klolo先生
这个家伙很懒,什么也没留下!
Tags | 热门标签
import
netty
header
httpclient
web
dll
shell
client
include
blob
config
web3
eval
list
erlang
filter
ip
callback
version
main
vba
future
join
function
match
metadata
const
heatmap
cPlusPlus
dockerfile
RankList | 热门文章
1
解决HTML5 WebSocket频繁断开连接的问题
2
‘蛅’字详解:新华字典中的读音、释义与应用
3
Java多线程基础:通过继承Thread类启动线程
4
图解数组操作:美团面试题之移动零(双方法解析)
5
ASML强化中国市场布局,加速光刻机供应应对美国干预
6
深入解析MySQL回表操作对性能的影响
7
BUAAOO电梯项目总结与反思
8
OpenGL ES 中的 Dither 技术详解
9
如何实现无水印高清屏幕录制并消除噪音
10
深入探讨 Redis 分布式锁的超时与可重入问题
11
如何在FastReport中将对象从第一页复制到第二页
12
初探区块链:理解其核心概念与应用
13
解决C:\Abyss Web Server\htdocs\login_tools.php第37行的‘解析错误:语法错误,意外的‘else’(T_ELSE)’问题
14
在阿里云与腾讯云筹建传统主从复制环境_mysql
15
单目录多文件Makefile编写指南
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有