歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android之重寫TextView實現走馬燈效果

TextView自帶的走馬燈效果在失去焦點的情況下會無效,公司正好需要一個這樣的效果,即使失去焦點走馬燈效果依然存在,那麼該怎麼做呢?網上亂七八糟的代碼一大堆,寫的那麼復雜,所以我就寫了一個簡單的例子,下面直接上代碼了。

1.自定義TextView:

 

  1. package com.zhf.TextAutoMoveDemo;  
  2.   
  3. import Android.content.Context;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.Color;  
  6. import android.util.AttributeSet;  
  7. import android.widget.TextView;  
  8.   
  9. /** 
  10.  * 自定義TextView,TextView自帶了該功能,但功能有限,最重要的是TextView失去焦點的情況下走馬燈效果會暫停! 
  11.  *  
  12.  * @author administrator 
  13.  *  
  14.  */  
  15. public class MyTextView extends TextView implements Runnable {  
  16.     private Text text;  
  17.   
  18.     public MyTextView(Context context, AttributeSet attrs) {  
  19.         super(context, attrs);  
  20.         text = new Text(  
  21.                 "走馬燈效果演示...",  
  22.                 0205);  
  23.     }  
  24.   
  25.     public void startMove() {  
  26.         Thread thread = new Thread(this);  
  27.         thread.start();  
  28.     }  
  29.   
  30.     @Override  
  31.     public void run() {  
  32.         try {  
  33.             while (true) {  
  34.                 // 1.刷新   
  35.                 postInvalidate();  
  36.                 // 2.睡眠   
  37.                 Thread.sleep(200L);  
  38.                 // 3.移動   
  39.                 text.move();  
  40.             }  
  41.         } catch (Exception e) {  
  42.             e.printStackTrace();  
  43.         }  
  44.     }  
  45.   
  46.     @Override  
  47.     protected void onDraw(Canvas canvas) {  
  48.         // 背景色   
  49.         canvas.drawColor(Color.WHITE);  
  50.         // 繪制文字   
  51.         text.draw(canvas);  
  52.     }  
  53.   
  54. }  

2.實體類Text

 

  1. package com.zhf.TextAutoMoveDemo;  
  2.   
  3. import android.graphics.Canvas;  
  4. import android.graphics.Color;  
  5. import android.graphics.Paint;  
  6.   
  7. public class Text {  
  8.     private Paint paint;  
  9.     private String content;//文字內容   
  10.     private float x;//x坐標   
  11.     private float y;//y坐標   
  12.     private float stepX;//移動步長   
  13.     private float contentWidth;//文字寬度   
  14.     public Text(String content, float x, float y, float stepX) {  
  15.         this.content = content;  
  16.         this.x = x;  
  17.         this.y = y;  
  18.         this.stepX = stepX;  
  19.         //畫筆參數設置   
  20.         paint = new Paint();  
  21.         paint.setColor(Color.RED);  
  22.         paint.setTextSize(20f);  
  23.         this.contentWidth = paint.measureText(content);  
  24.     }  
  25.   
  26.     public void move() {  
  27.         x -= stepX;  
  28.         if (x < -contentWidth)//移出屏幕後,從右側進入   
  29.             x = 320;//屏幕寬度,真實情況下應該動態獲取,不能寫死   
  30.     }  
  31.   
  32.     public void draw(Canvas canvas) {  
  33.         canvas.drawText(content, x, y, paint);  
  34.     }  
  35. }  

Copyright © Linux教程網 All Rights Reserved