Android 自定义View跑马灯效果(一)

今天通过书籍重新复习了一遍自定义VIew,为了加强自己的学习,我把它写在博客里面,有兴趣的可以看一下,相互学习共同进步:

通过自定义一个跑马灯效果,来诠释一下简单的效果:

一、创建一个类继承View,重写onDraw方法,进行绘制文字:

(1)  定义全局的变量:

private float textX = 0;

       private Paint paint = new Paint();
       private MyThead thead = null;
       初始化字体的位置,在onDraw方法中开启线程:
         paint.setTextSize();//初始化文字大小
canvas.drawText("我是文字", textX, , paint);画出文字的开始位置;
//圆形进度调效果 起始角度,和区间角度
canvas.drawArc(rectF, , acrX, true, paint);
if (thead == null) {
thead = new MyThead();
thead.start();
}
 

(2)开启线程进行文字字体的移动:

 private boolean running = true;

    private class MyThead extends Thread {
private Random random = new Random(); @Override
public void run() {
super.run(); while (running) { //文字跑马灯效果啊
textX = textX + ;
if (textX > getWidth()) {
textX = - paint.measureText("我是文字");//截取文字的长度
}
paint.setARGB(, random.nextInt(), random.nextInt(), random.nextInt());// 设置颜色 第一个参数:透明度
postInvalidate();//重新进行绘制 try {
sleep();
} catch (InterruptedException e) {
e.printStackTrace();
} } }
}

注:离开屏幕时调用的方法:

 @Override
protected void onDetachedFromWindow() {
//离开屏幕的操作
running = false;
super.onDetachedFromWindow(); }

(3)、在布局或者代码中引用:

直接包名引用:

 <com.example.zhangyanan.myview.view.DrawView
android:layout_width="match_parent"
android:layout_height="match_parent" />

二、在Xml中自定义属性:

列举跑马灯效果多行显示:设置全局变量行数,在xml中可以进行设置行数:

(1)初始化行数:

逻辑如下:

private int lineNum = 0;

    for (int i = ; i < lineNum; i++) {
//文字跑马灯效果
paint.setTextSize();
canvas.drawText("我是文字", textX, + i * , paint); if (thead == null) {
thead = new MyThead();
thead.start();
}
}

(2)在values中创建attrs.xml文件定义样式属性:

 <resources>
<declare-styleable name="DrawaViewStyle">
<attr name="lineNum" format="integer"></attr>
</declare-styleable>
</resources>

(3)在代码中解析lineNum属性:

     public DrawViewAttrs(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.DrawaViewStyle);
lineNum= ta.getInteger(R.styleable.DrawaViewStyle_lineNum, );
}

(4)在布局中应用:

引入命名空间:

xmlns:nt="http://schemas.android.com/apk/res/com.example.zhangyanan.myview"

添加自定义属性:

<com.example.zhangyanan.myview.view.DrawViewAttrs
android:layout_width="match_parent"
nt:lineNum=""
android:layout_height="match_parent" />

源码地址:链接:http://pan.baidu.com/s/1clQwkI  密码:6unf

以上就是自定义View的简单应用,不足之处请多指教。联系方式qq:1154749219

上一篇:【Android】不依赖焦点和选中的TextView跑马灯


下一篇:Android自定义之TextView跑马灯的监听