今天通过书籍重新复习了一遍自定义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. 无法启动Visual Studio的localhost web服务器,端口"xxxx"已被使用

    解决方法:项目属性-Web里面有web服务器端口的设置,换个端口即可.项目属性->web->服务器,不要选择“自动分配端口”,选择“使用指定端口”,后面输入一个端口号

  2. Cryptography I 学习笔记 --- 使用分组密码

    1. 如果加密算法是确定性的(相同的明文产生相同的密文),那么它对于选择明文攻击是不安全的 2. 随机化加密,每次对相同的密文加密,会产生不同的结果 AES加密模式 ecb:明文分块计算,块与块之间没 ...

  3. Light oj 1095 - Arrange the Numbers (组合数学+递推)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题意: 给你包含1~n的排列,初始位置1,2,3...,n,问你刚好固定 ...

  4. java加载类的方法1.classloader 2.class.forName()

    java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.

  5. Oracle Form's Trigger Tutorial With Sample FMB

    Created an Oracle Form to handle specific events / triggers like When-New-Form-Instance, Pre-Insert, ...

  6. RecyclerView的滚动事件分析

    列表的滚动一般分为两种: 手指按下 -> 手指拖拽列表移动 -> 手指停止拖拽 -> 抬起手指 手指按下 -> 手指快速拖拽后抬起手指 -> 列表继续滚动 -> 停 ...

  7. python核心编程学习(第三版)之网络编程

    套接字 套接字是计算机网络数据结构.在任何类型的通信开始之前,网络应用程序必须创建套接字. 有两种类型的套接字,基于文件和面向网络的. unix套接字是第一个家族,AF_UNIX代表地址家族,缩写AF ...

  8. 连接Zookeeper操作

    public class ZKConnector implements Watcher{ private static final Logger logger =LoggerFactory.getLo ...

  9. 改用MyAnalyzer的KMeans聚类算法

    <strong><span style="font-size:18px;">/*** * @author YangXin * @info 改用MyAnaly ...

  10. iOS之手势滑动返回功能

    iOS中如果不自定义UINavigationBar,通过手势向右滑是可以实现返回的,这时左边的标题文字提示的是上一个ViewController的标题,如果需要把文字改为简约风格,例如弄过箭头返回啥的 ...