Android开发:文字描边
来源:互联网 发布:萨尔曼.可汗 知乎 编辑:程序博客网 时间:2024/05/18 12:03
[1].[代码] [Java]代码 跳至[1][2] [3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package
com.example.testproject;
import
android.content.Context;
import
android.graphics.Canvas;
import
android.graphics.Paint.Style;
import
android.text.TextPaint;
import
android.util.AttributeSet;
import
android.view.ViewGroup;
import
android.widget.TextView;
/*
* StrokeTextView的目标是给文字描边
* 实现方法是两个TextView叠加,只有描边的TextView为底,实体TextView叠加在上面
* 看上去文字就有个不同颜色的边框了
*/
public
class
StrokeTextView
extends
TextView {
private
TextView borderText =
null
;
///用于描边的TextView
public
StrokeTextView(Context context) {
super
(context);
borderText =
new
TextView(context);
init();
}
public
StrokeTextView(Context context, AttributeSet attrs) {
super
(context, attrs);
borderText =
new
TextView(context,attrs);
init();
}
public
StrokeTextView(Context context, AttributeSet attrs,
int
defStyle) {
super
(context, attrs, defStyle);
borderText =
new
TextView(context,attrs,defStyle);
init();
}
public
void
init(){
TextPaint tp1 = borderText.getPaint();
tp1.setStrokeWidth(
4
);
//设置描边宽度
tp1.setStyle(Style.STROKE);
//对文字只描边
borderText.setTextColor(getResources().getColor(R.color.border_text));
//设置描边颜色
borderText.setGravity(getGravity());
}
@Override
public
void
setLayoutParams (ViewGroup.LayoutParams params){
super
.setLayoutParams(params);
borderText.setLayoutParams(params);
}
@Override
protected
void
onMeasure(
int
widthMeasureSpec,
int
heightMeasureSpec) {
CharSequence tt = borderText.getText();
//两个TextView上的文字必须一致
if
(tt==
null
|| !tt.equals(
this
.getText())){
borderText.setText(getText());
this
.postInvalidate();
}
super
.onMeasure(widthMeasureSpec, heightMeasureSpec);
borderText.measure(widthMeasureSpec, heightMeasureSpec);
}
protected
void
onLayout (
boolean
changed,
int
left,
int
top,
int
right,
int
bottom){
super
.onLayout(changed, left, top, right, bottom);
borderText.layout(left, top, right, bottom);
}
@Override
protected
void
onDraw(Canvas canvas) {
borderText.draw(canvas);
super
.onDraw(canvas);
}
}
[2].[代码] [XML]代码 跳至[1][2] [3]
1
2
3
4
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
resources
>
<
color
name
=
"border_text"
>#ffffff</
color
>
</
resources
>
[3].[图片] miao_bian.png跳至 [1] [2] [3]
0 0
- Android开发:文字描边
- Android文字描边
- android 文字描边
- android文字描边效果
- Android之文字描边
- [IOS 开发] UILabel文字描边
- android开发步步为营之104:文字加阴影效果和描边效果的实现
- 实现android文字描边功能
- Android开发:自由选择TextView的文字
- Android开发:自由选择TextView的文字
- Android开发:自由选择TextView的文字
- Android开发:自由选择TextView的文字
- Android开发:自由选择EditText的文字
- Android开发:自由选择TextView的文字
- Android TTS文字转语音开发
- 关于Android文字转语音(TTS)开发
- Android开发:让TextView文字竖直显示
- Android开发 TextView 文字和drawableLeft居中
- Knockout应用开发指南 第一章:入门
- 01背包***hihocoder
- TwoSum
- 通过 GitHub Pages 建立个人站点(详细步骤)
- InputStream的read方法读取字节不完全的问题
- Android开发:文字描边
- Applications using Launch Screen Files and targetting iOS 7.1 and earlier
- Android 引导界面的实现过程
- ERP软件市场占有率(2012/2013)
- 快排分区函数
- MX4找不见设备解决办法!!!
- Knockout应用开发指南 第二章:监控属性(Observables)
- 忘记openfire密码解决方法
- 提高HTML5 canvas性能的几种方法(转)