首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
solr
cpython
schema
future
timezone
perl
command
数组
dockerfile
yaml
vbscript
go
object
format
import
web
md5
cookie
main
php7
heap
config
heatmap
bitmap
utf-8
scala
expression
blob
keyword
sum
frameworks
get
client
testing
python2
random
web3
case
iostream
nodejs
filter
golang
httprequest
hashtable
byte
spring
function
lua
settings
jar
stream
httpclient
hashset
select
const
export
version
controller
netty
runtime
list
ip
timestamp
subset
actionscrip
hashcode
plugins
tags
merge
header
erlang
instance
python
js
include
install
match
node.js
text
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
import
如何在Android中利用TextView对字体颜色进行更改
如何在Android中利用TextView对字体颜色进行更改?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希 ...
[详细]
蜡笔小新 2023-09-03 18:11:26
import
Day3.2--Android简单UI控件之TextView的高级使用--SpannableString的使用
上节课,介绍了TextView的简单使用,包括在xml文件静态设置TextView的属性和文本内容信息,以及在java代码中动态的改变一个TextView所要显示的内容。掌握了基本使用之后,我们来看 ...
[详细]
蜡笔小新 2023-09-01 14:27:27
main
在java源文件中指定TextView文本显示内容
在java源文件中指定TextView文本显示内容在java源文件当中指定控件的文本显示内容,我们需要得到一个控件的对象即TextView的对象,如果在java源文件中我们想要得到这个指定的控件,我们 ...
[详细]
蜡笔小新 2023-08-29 17:17:15
main
android textview 多行滚动,scroll 在Android上使TextView可滚动
scroll-在Android上使TextView可滚动我在textview中显示文本似乎太长而不适合进入一个屏幕。我需要让我的TextView可滚动。我能怎么做那? ...
[详细]
蜡笔小新 2023-09-24 16:45:34
utf-8
Android TextView跑马灯效果
AndroidTextView跑马灯效果效果图TextView跑马灯继承TextView重写isFocused方法还有配置singline属性第一种方式:XML布局为:<?xmlversio ...
[详细]
蜡笔小新 2023-09-24 13:58:15
main
【Android每日一讲】2012.11.09 EditText与TextView共舞 - setOnKeyListener事件
1.范例说明EditTextWidget设计的初衷是为了等待User输入而准备的,那么在User输入的同时,又该如何拦截所输入的文字呢?Android的多数Widget都有 ...
[详细]
蜡笔小新 2023-09-24 13:17:40
utf-8
基础二:为什么Button,ImageButton有焦点,textview,imageview没有焦点
我们在电视或者手机上开发的时候,经常会遇到如下情况,在屏幕上布局了多个TextView,ImageView,ImageBut ...
[详细]
蜡笔小新 2023-09-17 17:41:34
utf-8
android TextView 控件居右显示
最近工作需要开始学习android一个简单的TextView控件居右显示都比较麻烦Xml代码<TextView ...
[详细]
蜡笔小新 2023-09-15 05:46:59
utf-8
Android TextView 属性 textsize 的单位是什么?
首选我们找到源码中的TextView找到textsize属性一个int类型默认值为15初使化自定义属性:我们看一个getDeimensionPixelSiz ...
[详细]
蜡笔小新 2023-09-12 20:38:44
utf-8
实现可点击展开的 TextView
概述Android开发过程中,经常遇到Textview展示不完全的情况。遇到此情况,通常的处理是:方案一Textview添加android:ellipsize属性,让展示不 ...
[详细]
蜡笔小新 2023-09-11 14:03:25
utf-8
TextView设置文字透明和文本高亮显示
TextView设置文字透明效果,只要降低文字颜色的透明度就可以了。而让文本高亮显示可以设置文本的背景或前景色高亮。1、TextView设置文 ...
[详细]
蜡笔小新 2023-09-02 14:02:42
go
Android TextView设置不同的颜色字体
AndroidTextView设置不同的颜色字体-这里记录一个比较方便的方式来解决Textview设置不同颜色的字体的方法。可能第一反应是布局的嵌套,这个方法肯定可以啊,但是肯定不 ...
[详细]
蜡笔小新 2023-08-31 19:33:08
go
Android 开发中根据搜索内容实现TextView中的文字部分加粗
Android开发中根据搜索内容实现TextView中的文字部分加粗-实现方式没有引入任何依赖,轻量级实现需求效果最近遇到一个需求,需要做一个搜索功能。搜索的内容需要加粗显示。完成 ...
[详细]
蜡笔小新 2023-08-31 13:38:22
import
Android如何自定义TextView实现文字图片居中显示
这篇文章主要介绍Android如何自定义TextView实现文字图片居中显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们先来分 ...
[详细]
蜡笔小新 2023-08-30 17:49:41
import
android TextView设置中文字体加粗实现方法
androidTextView设置中文字体加粗实现方法-英文设置加粗可以在xml里面设置:复制代码代码如下:android:text英文还可以直接在Stri ...
[详细]
蜡笔小新 2023-08-29 22:49:55
klolo先生
这个家伙很懒,什么也没留下!
Tags | 热门标签
solr
cpython
schema
future
timezone
perl
command
数组
dockerfile
yaml
vbscript
go
object
format
import
web
md5
cookie
main
php7
heap
config
heatmap
bitmap
utf-8
scala
expression
blob
keyword
sum
RankList | 热门文章
1
检查矩阵是否为拉丁方
2
如何在vscode内调试js
3
非标准比例的屏幕如何进行适配呢?
4
sqlserver200864位下载_sql server 2008下载SQL Server 2008数据库下载 官方版(32/64位)pc6下载站...
5
PAT——Student List for Course(注意运行超时问题)
6
我用500贝续费了3个月的会员,对简书的爱一如既往
7
Oracle DataPump崩溃了,现在无法创建新工作
8
23.临时对象
9
vue项目通过接口获取到数据后,但是页面未渲染。
10
【白皮书分享】2022新职业教育洞察白皮书:“职”成机遇,“育”见未来.pdf...
11
PostgreSQL readonly standby 只读库如何写数据?DDL DML 操作透明传输到主库
12
的法国开发工具的发货
13
React 新版文档网站开始公测
14
C#的控件输入法变换
15
ui设计未来发展如何(ui设计师未来发展)
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有