Android之重写TextView实现走马灯效果
TextView自带的走马灯效果在失去焦点的情况下会无效,公司正好需要一个这样的效果,即使失去焦点走马灯效果依然存在,那么该怎么做呢?网上乱七八糟的代码一大堆,写的那么复杂,所以我就写了一个简单的例子,下面直接上代码了。
1.自定义TextView:
- package com.zhf.TextAutoMoveDemo;
-
- import Android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.util.AttributeSet;
- import android.widget.TextView;
-
-
-
-
-
-
-
- public class MyTextView extends TextView implements Runnable {
- private Text text;
-
- public MyTextView(Context context, AttributeSet attrs) {
- super(context, attrs);
- text = new Text(
- "走马灯效果演示...",
- 0, 20, 5);
- }
-
- public void startMove() {
- Thread thread = new Thread(this);
- thread.start();
- }
-
- @Override
- public void run() {
- try {
- while (true) {
-
- postInvalidate();
-
- Thread.sleep(200L);
-
- text.move();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
-
- canvas.drawColor(Color.WHITE);
-
- text.draw(canvas);
- }
-
- }
|
2.实体类Text
- package com.zhf.TextAutoMoveDemo;
-
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
-
- public class Text {
- private Paint paint;
- private String content;
- private float x;
- private float y;
- private float stepX;
- private float contentWidth;
- public Text(String content, float x, float y, float stepX) {
- this.content = content;
- this.x = x;
- this.y = y;
- this.stepX = stepX;
-
- paint = new Paint();
- paint.setColor(Color.RED);
- paint.setTextSize(20f);
- this.contentWidth = paint.measureText(content);
- }
-
- public void move() {
- x -= stepX;
- if (x < -contentWidth)
- x = 320;
- }
-
- public void draw(Canvas canvas) {
- canvas.drawText(content, x, y, paint);
- }
- }
|
评论暂时关闭