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 自定义View跑马灯效果(一)的更多相关文章
- TextView: android:ellipsize="marquee" 跑马灯效果无效的问题
今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值 ...
- android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习
跑马灯效果 1.用过属性的方式实现跑马灯效果 属性: android:singleLine="true" 这个属性是设置TextView文本中文字 ...
- android:ellipsize实现跑马灯效果总结(转)
最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说 ...
- 【Android】TextView跑马灯效果
老规矩,先上图看效果. 说明 TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢慢滑动显示的效果就叫跑马灯效果. 其实,TextView ...
- android:ellipsize实现跑马灯效果总结
最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说都是 ...
- android 怎么实现跑马灯效果
自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 public class FocusedTextView extends TextView { public Foc ...
- android自定义view实现公章效果
上次去一个公司面试,面试官问了一个题,怎么用android的自定义view实现一个公章的效果,据说这是华为之前的面试题,我想了下,要是公章的效果,最外层是一个圆,里面是一个五角星,但是这文字怎么画呢, ...
- android 自定义view之侧滑效果
效果图: 看网上的都是两个view拼接,默认右侧的不显示,水平移动的时候把右侧的view显示出来.但是看最新版QQ上的效果不是这样的,但给人的感觉却很好,所以献丑来一发比较高仿的. 知识点: 1.Vi ...
- android 设置textview跑马灯效果
head_tv1.setEllipsize(TextUtils.TruncateAt.MARQUEE);head_tv1.setSingleLine(true);head_tv1.setSelecte ...
随机推荐
- Java发送邮件----自己封装的方法
发送邮件的封装类: package com.email; import java.util.Properties; import javax.mail.Authenticator; import ja ...
- Jquery操作层级选择器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- java实现服务端开启多线程处理客户端的上传图片请求
将客户端c:\\a.jpg 上传到e:\\公司名称+6位随机数.jpg 这样为了不断开连接客户端每次上传的图片名字不重名覆盖,验证之用 这里需要注意的是Socket的终止客户端的输入方法 shut ...
- Android,一条线串联实心圆布局
最近遇到一个简单的布局,不是listview的形式.就只是单纯的下图这种: 此界面布局代码: <?xml version="1.0" encoding="utf-8 ...
- HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】
Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Proble ...
- luogu P1592 互质
题目描述 输入两个正整数n和k,求与n互质的第k个正整数. 输入输出格式 输入格式: 仅一行,为两个正整数n(≤10^6)和k(≤10^8). 输出格式: 一个正整数,表示与n互质的第k个正整数. 输 ...
- 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 ...
- Linux sed 批量替换字符串和更多用法
比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: # sed -i “s/zhangsan/lisi/g” `grep zhangsan -rl /module ...
- Checkbox Text 重影问题的解决的方法
Checkbox有个属性值 <CheckBox android:id="@+id/cb_reg_agree" style="@style/reg_checkbox_ ...
- MetaQ对接SparkStreaming示例代码
由于JavaReceiverInputDStream<String> lines = ssc.receiverStream(Receiver<T> receiver) 中 没有 ...