一. 實現很簡單,就是對顏色進行線性的漸變。用到的類是LinearGradient.直接貼代碼:
public class Test extends Activity {
private TextViewTest mTextViewTest;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextViewTest = new TextViewTest(this);
setContentView(mTextViewTest);
}
public class TextViewTest extends TextView {
private LinearGradient mGradient;
private int[] mGradientColors = { Color.RED, Color.rgb(255, 165, 0),
Color.YELLOW, Color.GREEN, Color.rgb(0, 255, 255), Color.BLUE,
Color.rgb(160, 32, 240) };
private int mTitleWidth;
private String mTitle = "三十六天罡,七十二地煞,乃是天地正邪之氣所生,如今奉命下凡轉世為科學家.但法用以正,則可以造福人群;";
public TextViewTest(Context context) {
super(context);
// TODO Auto-generated constructor stub
setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));
setWillNotDraw(false);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
measure(0, 0);
Paint paint = new Paint();
paint.setStyle(Style.FILL_AND_STROKE);
mGradient = new LinearGradient(0, 0, getWidth(),
getMeasuredHeight(), mGradientColors, null, TileMode.REPEAT);
paint.setShader(mGradient);
mTitleWidth = 0;
float[] width = new float[mTitle.length()];
paint.getTextWidths(mTitle, width);
Log.i("Tag", "Width.length= " + width.length);
int start = 0;
int offsetY = 10;
for (int j = 0; j < mTitle.length(); j++) {
mTitleWidth += (int) Math.ceil(width[j]);
if (mTitleWidth > getWidth()) {
canvas.drawText(mTitle.substring(start, j), 0, offsetY,
paint);
mTitleWidth = 0;
start = start + j;
offsetY = offsetY + getMeasuredHeight() + 5;
j--;
}
}
if (mTitleWidth > 0) {
canvas.drawText(mTitle.substring(start), 0, offsetY, paint);
}
}
}
}
二. 實例圖
- 大小: 3.6 KB
分享到:
相关推荐
RoundRainbowTextView Android自定义TextView,带渐变色边框的彩虹字效果 RoundRainbowTextView textView = findViewById(R.id.custom); textView.setBorder(2, 5, new int[]{Color.RED, Color.YELLOW});
在Android开发中,注解(Annotation)是一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器或运行时环境用来执行特定的操作。注解类的使用极大地提高了代码的可读性和可维护性,同时也简化了依赖...
1.3Android中的个人英雄主义 1.3.1第一届挑战赛冠军介绍 1.3.2第二届挑战赛冠军介绍 1.3.3Androidmarket 1.4Android平台 1.4.1Android体系结构 1.4.2熟悉的开发工具 1.4.3合理的学习曲线 1.5小结 第2章搭建你的开发...
Android提供了多种用户界面(UI)组件,如TextView、EditText、Button等,以及布局管理器如LinearLayout、RelativeLayout和ConstraintLayout。笔记将深入讲解这些组件的用法和属性,以及如何通过XML布局文件设计用户...
1.3Android中的个人英雄主义 1.3.1第一届挑战赛冠军介绍 1.3.2第二届挑战赛冠军介绍 1.3.3Androidmarket 1.4Android平台 1.4.1Android体系结构 1.4.2熟悉的开发工具 1.4.3合理的学习曲线 1.5小结 第2章搭建你的开发...
线性布局是Android开发中的一种基础布局方式,用于在屏幕上有序地排列用户界面元素,可以是垂直排列(默认)或水平排列。理解并熟练运用线性布局是构建高效、美观的Android应用程序的关键。 线性布局的主要特点在于...
在Android应用开发中,SlidingMenu是一个非常常见的组件,它为用户提供了一种侧滑导航的方式,使得用户可以通过向左或向右滑动主界面来显示或隐藏附加菜单。本篇文章将详细探讨如何在Android项目中实现一个向右滑动...
Android提供了丰富的布局(如LinearLayout、RelativeLayout、ConstraintLayout等)和组件(如TextView、ImageView、Button等)来构建用户界面。仿QQ界面需要考虑模仿QQ的主界面、聊天窗口、联系人列表等元素。使用...
通过调用Rainbow库中的API,可以轻松地将这些渐变效果应用到View上,如Button、TextView、ImageView等。 除了渐变,Rainbow还支持颜色着色(Color Shading)。这意味着你可以将任意颜色调整为不同的色调,这对于...
具有对TextView的自定义字体支持的动画效果 查看见 屏幕截图 类型 gif 规模 蒸发 秋季 线 打字机 彩虹 褪色 用法 def htextview_version = "0.1.6" // as 3.0 use implementation compile ...
- 密码输入:在Android应用中,通常使用EditText控件来接收用户输入的密码,并通过TextView或ImageView显示密码输入状态(明文或星号)。 - 密码验证:密码通常需要满足一定的复杂性要求,如长度、字符组合等。这...