首页 > 其他分享 >Android TextView中显示彩虹字

Android TextView中显示彩虹字

时间:2023-03-20 13:03:04浏览次数:54  
标签:彩虹 mTitleWidth mTitle Color paint int new Android TextView


一. 實現很簡單,就是對顏色進行線性的漸變。用到的類是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);
}
}
}
}



二. 實例圖




  • Android TextView中显示彩虹字_Test

  • 大小: 3.6 KB
  • ​​查看图片附件​​

标签:彩虹,mTitleWidth,mTitle,Color,paint,int,new,Android,TextView
From: https://blog.51cto.com/u_5454003/6132601

相关文章

  • Android View 拖动&插入
    View拖动&插入即:支持拖动图标然后把之插入2个View之间为了降低难度选用了若干ImageView放入ViewGroup:verticalLinearLayout......
  • Android预定义样式
    字体大小对于能够显示文字的控件(如TextViewEditTextRadioButtonButtonCheckBoxChronometer等等),你有时需要控制字体的大小。Android平台定义了......
  • android开发之gallery 实现滚动一张且短距离滑动实现滚动
    首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但是很多时候我们不需要它的这些特性。我今天就介绍一下去掉惯性滚动以及短距离翻页的实现:......
  • android上一些方法的区别和用法的注意事项
    onMeasure()和onLayout()1.onMeasurea.属于View的方法,用来测量自己和内容的来确定宽度和高度b.view的measure方法体中会调用onMeasure2.onLayouta.属于ViewG......
  • 【Android 逆向】【攻防世界】Ph0en1x-100
    1.apk安装到手机,老套路需要输入flag2.jadx打开apk,没有加壳......publicvoidonGoClick(Viewv){StringsInput=this.etFlag.getText().toString()......
  • android stdio对于xml中列表的展示
    我们需要用到一个控件,ListView如果愿意深度学习,可以观看下方的文章。(11条消息)Android最常用的控件ListView(详解)_androidlistview_撩得Android一次心动的博客-CSDN博......
  • [Android] Android版本 和 SDK / NDK / Qt 版本对应关系
    系统版本与SDK版本平台版本 API级别(SDK版本)版本代号发布时间Android1130R2020.9Android10.029 Q2019.8Android9.028Pie2018.8Android8.1 27 Oreo2017.12Android8.0......
  • android studio里设置 大括号占一行
    看了书《构建之法》里面有说到建议编程时的那个大括号占一行的,今天学android的时候突然想试试设置 一下,上网搜索了一下,方法如下图:  这样就可以了!!!......
  • Android控件TextProgressBar进度条上显文字
    Android系统的进度条控件默认的设计的不是很周全,比如没有包含文字的显示,那么如何在Android进度条控件上显示文字呢?来自Google内部的代码来了解下,主......
  • Android的Handler总结
    <一>Handler的定义:         主要接受子线程发送的数据,并用此数据配合主线程更新UI.         解释:当应用程序启动时,And......