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 ...
随机推荐
- smtp发送邮件记得结尾发送"\r\n.\r\n"
前段时间老板安排我修复一个邮件服务器后台C程序的bug,这个功能是邮件强制发送功能,从邮件管理后台将垃圾邮件发送出去. 因为服务器是debian系统,所以我用dbg配合日志大致跟踪后,追踪到了读取邮件 ...
- AC日记——幸运号码 51nod 1043
幸运号码 思路: 传说中的数位dp: 不难发现,n(n<1000) ,那么,n个数的最大和为9*1000=9000: 对于9000*1000的时间范围,我们可以用dp来解决: dp[i][j], ...
- AC日记——[Sdoi2010]星际竞速 bzoj 1927
1927 思路: 连边,拆点: 每个点拆成i,i+n,都向t连边: i到t表示高速模式,i+n到t表示跳跃模式: 然后读入路径,如果u>v,则交换u,v: u向v+n连边: spfa跑最小费用: ...
- ios 地图,系统升级为12后,进入地图,大头针全部默认展开问题,以及在选择不同距离的情况下,如何刷新地图的区域范围
1.第一个问题,大头针在ios12,默认展开问题,需要设置大头针视图的默认选中属性为NO - (MKAnnotationView *)mapView:(MKMapView *)mapView view ...
- php基础 gd图像生成、缩放、logo水印和验证码
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等. 图像生成 <?php /* 用windows画图板画图 1.新建空白画布(指定 ...
- MySQL的INFORMATION_SCHEMA数据库简介
大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库.information_schema数据库是做什么用的呢,使用WordPress博客 ...
- 初探ggplot2 geom__制作面积图
大家大概都对如下信息图并不陌生,该图用100%堆积面积图的方式来表现不同时期不同国家人数所占的比例.这是一种很有意思的表达方式,而面积图也是很常用的数据图表,现在让我们一起来看看如何在R里用g ...
- 你值得关注的几种常见的js设计模式
前言 潜水了一段时间,今天空闲时间复盘下之前的知识点,聊聊 js 几种常见的设计模式. 掌握 JavaScript 中常见的一些设计模式,对我们书写规范性代码,可维护性代码有很大的帮助. ps:最近在 ...
- Eclipse4.4以上版本不能使用easyExplorer,采用OpenExplorer
如果想在Ecipse里打开目录,一直用easyExplorer,可是现在版本升级了easyExplorer不好使,可以用OpenExplorer到https://github.com/samsonw/ ...
- Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
该代码片段来自于: http://www.sharejs.com/codes/delphi/8999,发现好多代码,想用的时候找不到,记录一下备用 function RunDosCommand(Com ...