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

二. 實例圖


更多相关文章

  1. Androidの联系人群组Group操作示例
  2. 疫情防控不能松懈,利用数据挖掘做好重点区域人群密度预测

随机推荐

  1. 《第一行代码-Android》学习笔记(八)
  2. 在Android安装Market和Map
  3. Android仿iOS启动界面
  4. 如何定制android源码的编译选项 & 后期安
  5. Android得不到对话框中EditView值的问题
  6. Android(安卓)3D系列之基本概念篇
  7. Android(安卓)集成Crosswalk替换成X5WebV
  8. 搭建windows下的android开发环境
  9. Android(安卓)用纯代码实现复杂界面
  10. Android(安卓)面试复习资料