今天通过书籍重新复习了一遍自定义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 自定义View跑马灯效果(一)的更多相关文章

  1. TextView: android:ellipsize="marquee" 跑马灯效果无效的问题

    今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值 ...

  2. android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习

    跑马灯效果 1.用过属性的方式实现跑马灯效果 属性:                  android:singleLine="true" 这个属性是设置TextView文本中文字 ...

  3. android:ellipsize实现跑马灯效果总结(转)

      最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说 ...

  4. 【Android】TextView跑马灯效果

    老规矩,先上图看效果. 说明 TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢慢滑动显示的效果就叫跑马灯效果. 其实,TextView ...

  5. android:ellipsize实现跑马灯效果总结

    最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说都是 ...

  6. android 怎么实现跑马灯效果

    自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 public class FocusedTextView extends TextView { public Foc ...

  7. android自定义view实现公章效果

    上次去一个公司面试,面试官问了一个题,怎么用android的自定义view实现一个公章的效果,据说这是华为之前的面试题,我想了下,要是公章的效果,最外层是一个圆,里面是一个五角星,但是这文字怎么画呢, ...

  8. android 自定义view之侧滑效果

    效果图: 看网上的都是两个view拼接,默认右侧的不显示,水平移动的时候把右侧的view显示出来.但是看最新版QQ上的效果不是这样的,但给人的感觉却很好,所以献丑来一发比较高仿的. 知识点: 1.Vi ...

  9. android 设置textview跑马灯效果

    head_tv1.setEllipsize(TextUtils.TruncateAt.MARQUEE);head_tv1.setSingleLine(true);head_tv1.setSelecte ...

随机推荐

  1. Java发送邮件----自己封装的方法

    发送邮件的封装类: package com.email; import java.util.Properties; import javax.mail.Authenticator; import ja ...

  2. Jquery操作层级选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. java实现服务端开启多线程处理客户端的上传图片请求

    将客户端c:\\a.jpg 上传到e:\\公司名称+6位随机数.jpg  这样为了不断开连接客户端每次上传的图片名字不重名覆盖,验证之用 这里需要注意的是Socket的终止客户端的输入方法  shut ...

  4. Android,一条线串联实心圆布局

    最近遇到一个简单的布局,不是listview的形式.就只是单纯的下图这种: 此界面布局代码: <?xml version="1.0" encoding="utf-8 ...

  5. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

  6. luogu P1592 互质

    题目描述 输入两个正整数n和k,求与n互质的第k个正整数. 输入输出格式 输入格式: 仅一行,为两个正整数n(≤10^6)和k(≤10^8). 输出格式: 一个正整数,表示与n互质的第k个正整数. 输 ...

  7. MD5 algorithm in Objective C

    How to calculate the MD5 in objective C ? md5 is available on the iPhone and can be added as an exte ...

  8. Linux sed 批量替换字符串和更多用法

    比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: # sed -i “s/zhangsan/lisi/g” `grep zhangsan -rl /module ...

  9. Checkbox Text 重影问题的解决的方法

    Checkbox有个属性值 <CheckBox android:id="@+id/cb_reg_agree" style="@style/reg_checkbox_ ...

  10. MetaQ对接SparkStreaming示例代码

    由于JavaReceiverInputDStream<String> lines = ssc.receiverStream(Receiver<T> receiver) 中 没有 ...