首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
merge
php
php5
range
include
bitmap
runtime
actionscrip
random
cpython
text
python
jar
sum
settings
cSharp
c语言
dockerfile
hashtable
default
controller
datetime
js
solr
join
require
select
web3
scala
char
rsa
spring
schema
bytecode
lua
jsp
tags
ascii
grid
timestamp
cPlusPlus
integer
frameworks
shell
hash
fetch
eval
loops
timezone
replace
instance
format
substring
future
audio
regex
int
get
header
stream
javascript
httpclient
cookie
md5
emoji
usb
dagger
plugins
config
yaml
case
process
io
chat
search
bash
vbscript
split
hashset
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
select
android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
在Android中Spinner就是下拉菜单和AutoCompleteTextView自动显示的样式,它相当于HTML中的<select>标签。Android中提供的SpinnerWid ...
[详细]
蜡笔小新 2023-09-24 17:55:24
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
优化ListView性能
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
default
Android 渐变圆环加载控件实现
本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ...
[详细]
蜡笔小新 2024-12-27 13:34:19
text
Android LED 数字字体的应用与实现
本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ...
[详细]
蜡笔小新 2024-12-27 10:34:22
text
Android,TextView优雅显示长文本、富文本
Android,TextView优雅显示长文本、富文本Android提供了TextView这个类作为Android开发当中展示文字的工作,最近笔者在做类似于一个展示类型的APP,发现TextV ...
[详细]
蜡笔小新 2023-09-25 20:15:59
text
android-代码修改TextView中部分某段文字的颜色
效果如图显示:textView(TextView)findViewById(R.id.textview);SpannableStringBuilderbuildernewSpanna ...
[详细]
蜡笔小新 2023-09-25 15:10:16
text
TextView的跑马灯效果
单个跑马灯效果其实只需要把TextView的属性设置成下面即可:<?xmlversion"1.0"encoding"utf-8"?>< ...
[详细]
蜡笔小新 2023-09-25 13:37:08
text
android textview 多行滚动,scroll 在Android上使TextView可滚动
scroll-在Android上使TextView可滚动我在textview中显示文本似乎太长而不适合进入一个屏幕。我需要让我的TextView可滚动。我能怎么做那? ...
[详细]
蜡笔小新 2023-09-24 16:45:34
text
Android TextView跑马灯效果
AndroidTextView跑马灯效果效果图TextView跑马灯继承TextView重写isFocused方法还有配置singline属性第一种方式:XML布局为:<?xmlversio ...
[详细]
蜡笔小新 2023-09-24 13:58:15
js
Android 自定义控件起步:自定义TextView
转载至:http:blog.csdn.netlmj623565791articledetails24252901不过对原作进行了相关细节优化,所以才有此文..首先我们看一 ...
[详细]
蜡笔小新 2023-09-13 14:11:13
text
Android TextView利用measureText自适应文本字体大小宽度
AndroidTextView利用measureText自适应文本字体大小宽度常常有这种情况,UI设计师限定一个文本TextView的宽度值比如80dip,但是该文本长度 ...
[详细]
蜡笔小新 2023-09-04 20:39:43
text
TextView设置文字透明和文本高亮显示
TextView设置文字透明效果,只要降低文字颜色的透明度就可以了。而让文本高亮显示可以设置文本的背景或前景色高亮。1、TextView设置文 ...
[详细]
蜡笔小新 2023-09-02 14:02:42
text
Android TextView设置不同的颜色字体
AndroidTextView设置不同的颜色字体-这里记录一个比较方便的方式来解决Textview设置不同颜色的字体的方法。可能第一反应是布局的嵌套,这个方法肯定可以啊,但是肯定不 ...
[详细]
蜡笔小新 2023-08-31 19:33:08
klolo先生
这个家伙很懒,什么也没留下!
Tags | 热门标签
merge
php
php5
range
include
bitmap
runtime
actionscrip
random
cpython
text
python
jar
sum
settings
cSharp
c语言
dockerfile
hashtable
default
controller
datetime
js
solr
join
require
select
web3
scala
char
RankList | 热门文章
1
win7电脑文件加密怎么办?如何选择合适的加密软件
2
交通标线禁止压线行为及相关规定
3
阿里云虚拟主机安装多个织梦系统的方法
4
海马s5近光灯能否直接更换为H7?
5
ScrollView嵌套Collectionview无痕衔接四向滚动,支持自定义TitleView
6
高中物理和高中语文的学习方法有何不同?
7
[导入]IT从业人员必看的10个论坛
8
React项目中运用React技巧解决实际问题的总结
9
sqlserver云存储和本地存储的区别及启动方法
10
SDT表和DCT表介绍及作用分析
11
【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
12
华为智能机恢复出厂设置的步骤详解
13
关于CMS收集器的知识介绍和优缺点分析
14
Python拼接字符串的七种方式
15
iOS Swift中如何实现自动登录?
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有