首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
express
foreach
fetch
typescript
loops
eval
hash
utf-8
c语言
php
dockerfile
uri
jar
timezone
keyword
nodejs
subset
usb
byte
import
string
go
php8
scala
python
char
hashcode
merge
include
int
require
expression
integer
dagger
replace
window
actionscrip
dll
httpclient
range
heap
python2
controller
flutter
uml
tags
search
header
future
hashset
tree
netty
format
substring
vbscript
ascii
hashtable
post
golang
hook
cookie
sum
function
bash
text
select
split
erlang
input
copy
cmd
filter
list
buffer
export
php7
const
regex
rsa
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
int
Day3.2--Android简单UI控件之TextView的高级使用--SpannableString的使用
上节课,介绍了TextView的简单使用,包括在xml文件静态设置TextView的属性和文本内容信息,以及在java代码中动态的改变一个TextView所要显示的内容。掌握了基本使用之后,我们来看 ...
[详细]
蜡笔小新 2023-09-01 14:27:27
int
如何在Android中利用TextView对字体颜色进行更改
如何在Android中利用TextView对字体颜色进行更改?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希 ...
[详细]
蜡笔小新 2023-09-03 18:11:26
string
在java源文件中指定TextView文本显示内容
在java源文件中指定TextView文本显示内容在java源文件当中指定控件的文本显示内容,我们需要得到一个控件的对象即TextView的对象,如果在java源文件中我们想要得到这个指定的控件,我们 ...
[详细]
蜡笔小新 2023-08-29 17:17:15
utf-8
android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
vlist2.xml代码:<?xmlversion1.0encodingutf-8?><LinearLayoutxmlns:androi ...
[详细]
蜡笔小新 2023-08-23 13:55:23
python
Android 中的布局方式之线性布局
nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ...
[详细]
蜡笔小新 2024-11-22 11:20:34
int
【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
int
Android 自定义控件起步:自定义TextView
转载至:http:blog.csdn.netlmj623565791articledetails24252901不过对原作进行了相关细节优化,所以才有此文..首先我们看一 ...
[详细]
蜡笔小新 2023-09-13 14:11:13
int
Android TextView 属性 textsize 的单位是什么?
首选我们找到源码中的TextView找到textsize属性一个int类型默认值为15初使化自定义属性:我们看一个getDeimensionPixelSiz ...
[详细]
蜡笔小新 2023-09-12 20:38:44
int
Android TextView和EditText属性详解
TextView属性详解:autoLink设置 是否当文本为URL链接email电话号码map时,文本显示为可点击的链接。可选值(nonewebemailphonema ...
[详细]
蜡笔小新 2023-09-10 15:59:56
int
Android 开发中根据搜索内容实现TextView中的文字部分加粗
Android开发中根据搜索内容实现TextView中的文字部分加粗-实现方式没有引入任何依赖,轻量级实现需求效果最近遇到一个需求,需要做一个搜索功能。搜索的内容需要加粗显示。完成 ...
[详细]
蜡笔小新 2023-08-31 13:38:22
int
Android如何自定义TextView实现文字图片居中显示
这篇文章主要介绍Android如何自定义TextView实现文字图片居中显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们先来分 ...
[详细]
蜡笔小新 2023-08-30 17:49:41
int
android TextView设置中文字体加粗实现方法
androidTextView设置中文字体加粗实现方法-英文设置加粗可以在xml里面设置:复制代码代码如下:android:text英文还可以直接在Stri ...
[详细]
蜡笔小新 2023-08-29 22:49:55
int
Android 添加TextView删除线(代码简单)
Android添加TextView删除线(代码简单)-在做商城的项目中,有这么个需求,就是一个产品下有两个价格,一个是市场价,一个是销售价,这时要把市场价添加个删除线;刚开始遇到这 ...
[详细]
蜡笔小新 2023-08-21 13:03:41
klolo先生
这个家伙很懒,什么也没留下!
Tags | 热门标签
express
foreach
fetch
typescript
loops
eval
hash
utf-8
c语言
php
dockerfile
uri
jar
timezone
keyword
nodejs
subset
usb
byte
import
string
go
php8
scala
python
char
hashcode
merge
include
int
RankList | 热门文章
1
Qtum量子链周报(9月17日9月23日)
2
Ubuntu文件共享Samba服务器的搭建与使用
3
dp背包问题——1049. 最后一块石头的重量 II
4
dataframe添加一列_在PySpark数据框中添加新列的5种方法
5
2107.11.08
6
为什么我以前建的记事本,却没有记事本选项呢?
7
《望洞庭》翻译 原文赏析诗人唐刘禹锡
8
【计算机算法设计与分析】——选择问题
9
eselasticsearchaggsmetricsmax
10
关于制作ColourPicker 彩色圆的问题
11
消息队列基础概念
12
【JVM】idea启动项目时候添加jvm启动参数显示详细日志
13
Zend_Db_Table::getDefaultAdapter is not working【MySQL】
14
ReactNative初学2模拟器配置
15
BZOJ.3926.[ZJOI2015]诸神眷顾的幻想乡(广义后缀自动机)
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有