- 浏览: 5775280 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
普通的TextView可以实现跑马灯,但是只有当焦点在它上面时才有效。
如何做一个自动的跑马灯呢?
第一种:继承TextView,然后重写isFocused()方法就可以了,简单!
使用时同TextView一样:
第2种:还是继承TextView,重写onDraw(),在onDraw中不停的重绘。
使用:
这2种跑马灯稍微有点区别,需要掂量着使用。
第1种跑马灯不能设置速度,并且要超过一行才会滚动。
第2种跑马灯只能设置单一颜色,且需要在代码中设置,不能同时设置多种颜色。速度设的不要过大(<= 2.0f),否则停顿现象比较明显。
想知道同时设置多种颜色?
http://gundumw100.iteye.com/admin/blogs/904107
如何做一个自动的跑马灯呢?
第一种:继承TextView,然后重写isFocused()方法就可以了,简单!
import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; /** * 单行文本跑马灯控件 * @author admin * */ public class ScrollForeverTextView extends TextView { public ScrollForeverTextView(Context context) { super(context); // TODO Auto-generated constructor stub } public ScrollForeverTextView(Context context, AttributeSet attrs) { super(context, attrs); } public ScrollForeverTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean isFocused() { return true; } }
使用时同TextView一样:
<com.ql.view.ScrollForeverTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="30px" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:textColor="@color/red" android:text="1234567890wwwwwwwwwwwwwwwwwwwwww1234567890" android:focusable="true" />
第2种:还是继承TextView,重写onDraw(),在onDraw中不停的重绘。
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; import android.view.Display; import android.view.View; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.TextView; /** * 单行文本跑马灯控件 * @author admin * */ public class AutoScrollTextView extends TextView implements OnClickListener { public final static String TAG = AutoScrollTextView.class.getSimpleName(); private float textLength = 0f;// 文本长度 private float viewWidth = 0f; private float step = 0f;// 文字的横坐标 private float y = 0f;// 文字的纵坐标 private float temp_view_plus_text_length = 0.0f;// 用于计算的临时变量 private float temp_view_plus_two_text_length = 0.0f;// 用于计算的临时变量 public boolean isStarting = false;// 是否开始滚动 private Paint paint = null;// 绘图样式 private CharSequence text = "";// 文本内容 private float speed = 0.5f; private int textColor=0xFF000000; public int getTextColor() { return textColor; } public void setTextColor(int color) { this.textColor = color; } public float getSpeed() { return speed; } public void setSpeed(float speed) { this.speed = speed; } public AutoScrollTextView(Context context) { super(context); initView(); } public AutoScrollTextView(Context context, AttributeSet attrs) { super(context, attrs); initView(); } public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(); } /** */ /** * 初始化控件 */ private void initView() { setOnClickListener(this); } /** */ /** * 文本初始化,每次更改文本内容或者文本效果等之后都需要重新初始化一下! */ public void init(float width/*WindowManager windowManager*/) { text=super.getText(); paint = super.getPaint(); // Paint paint=new Paint(); text = getText().toString(); textLength = paint.measureText(text.toString()); // viewWidth = getWidth(); // if (viewWidth == 0) { // if (windowManager != null) { // Display display = windowManager.getDefaultDisplay(); // viewWidth = display.getWidth(); // } // } viewWidth=width; step = textLength; temp_view_plus_text_length = viewWidth + textLength; temp_view_plus_two_text_length = viewWidth + textLength * 2; y = getTextSize() + getPaddingTop(); paint.setColor(textColor); } @Override public Parcelable onSaveInstanceState() { Parcelable superState = super.onSaveInstanceState(); SavedState ss = new SavedState(superState); ss.step = step; ss.isStarting = isStarting; return ss; } @Override public void onRestoreInstanceState(Parcelable state) { if (!(state instanceof SavedState)) { super.onRestoreInstanceState(state); return; } SavedState ss = (SavedState) state; super.onRestoreInstanceState(ss.getSuperState()); step = ss.step; isStarting = ss.isStarting; } public static class SavedState extends BaseSavedState { public boolean isStarting = false; public float step = 0.0f; SavedState(Parcelable superState) { super(superState); } @Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeBooleanArray(new boolean[] { isStarting }); out.writeFloat(step); } public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() { public SavedState[] newArray(int size) { return new SavedState[size]; } @Override public SavedState createFromParcel(Parcel in) { return new SavedState(in); } }; private SavedState(Parcel in) { super(in); boolean[] b = null; in.readBooleanArray(b); if (b != null && b.length > 0) isStarting = b[0]; step = in.readFloat(); } } /** */ /** * 开始滚动 */ public void startScroll() { isStarting = true; invalidate(); } /** */ /** * 停止滚动 */ public void stopScroll() { isStarting = false; invalidate(); } @Override public void onDraw(Canvas canvas) { // super.onDraw(canvas); canvas.drawText(text,0,text.length(), temp_view_plus_text_length - step, y, paint); if (!isStarting) { return; } step += speed; if (step > temp_view_plus_two_text_length) step = textLength; invalidate(); } @Override public void onClick(View v) { if (isStarting) stopScroll(); else startScroll(); } }
使用:
marquee = (AutoScrollTextView) findViewById(R.id.marquee); // marquee.setText(String.format(getResources().getString(R.string.marquee0),Consts.termno,"2010-12-28")); marquee.setText("上证指数3000.15 6.81(0.37%)深圳成指3000.15 6.81(0.37%)"); // marquee.setTextColor(0xffff0000);//注意:颜色必须在这里设置,xml中设置无效!默认黑色。 //如果想改变跑马灯的文字内容或者文字效果,则在调用完setText方法之后,需要再调用一下init(width)方法,重新进行初始化和相关参数的计算。 marquee.setSpeed(1.5f); marquee.init(width);//width通常就是屏幕宽! marquee.startScroll();
这2种跑马灯稍微有点区别,需要掂量着使用。
第1种跑马灯不能设置速度,并且要超过一行才会滚动。
第2种跑马灯只能设置单一颜色,且需要在代码中设置,不能同时设置多种颜色。速度设的不要过大(<= 2.0f),否则停顿现象比较明显。
想知道同时设置多种颜色?
http://gundumw100.iteye.com/admin/blogs/904107
发表评论
-
NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
2018-10-31 20:45 6798网上有一个StickyScrollView,称之为粘性Scro ... -
自定义Behavior实现AppBarLayout越界弹性效果
2017-03-31 09:33 10220一、继承AppBarLayout.Beha ... -
Android - 一种相似图片搜索算法的实现
2017-03-31 09:33 2567算法 缩小尺寸。 将图片缩小到8x8的尺寸,总共64个 ... -
使用SpringAnimation实现带下拉弹簧动画的 ScrollView
2017-03-30 11:30 2788在刚推出的 Support Library 25.3.0 里面 ... -
Android为应用添加角标(Badge)
2017-03-30 11:21 60991.需求简介 角标是什么意思呢? 看下图即可明了: 可 ... -
Android端与笔记本利用局域网进行FTP通信
2017-03-23 10:17 922先看图 打开前: 打开后: Activity类 ... -
PorterDuffColorFilter 在项目中的基本使用
2017-03-03 10:58 1298有时候标题栏会浮在内容之上,而内容会有颜色的变化,这时候就要求 ... -
ColorAnimationView 实现了滑动Viewpager 时背景色动态变化的过渡效果
2017-02-24 09:41 2168用法在注释中: import android.anima ... -
迷你轻量级全方向完美滑动处理侧滑控件SlideLayout
2017-01-16 16:53 2546纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 sup ... -
Effect
2017-01-05 09:57 0https://github.com/JetradarMobi ... -
动态主题库Colorful,容易地改变App的配色方案
2016-12-27 14:49 2516Colorful是一个动态主题库,允许您很容易地改变App的配 ... -
对视图的对角线切割DiagonalView
2016-12-27 14:23 1070提供对视图的对角线切割,具有很好的用户定制 基本用法 ... -
仿淘宝京东拖拽商品详情页上下滚动黏滞效果
2016-12-26 16:53 3417比较常用的效果,有现成的,如此甚好!:) import ... -
让任意view具有滑动效果的SlideUp
2016-12-26 09:26 1657基本的类,只有一个: import android.a ... -
AdvancedWebView
2016-12-21 09:44 16https://github.com/delight-im/A ... -
可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
2016-11-02 22:13 1859可设置圆角背景边框的的按钮, 通过调节色彩明度自动计算按下(p ... -
网络请求库相关
2016-10-09 09:35 62https://github.com/amitshekhari ... -
ASimpleCache一个简单的缓存框架
2015-10-26 22:53 2121ASimpleCache 是一个为android制定的 轻量级 ... -
使用ViewDragHelper实现的DragLayout开门效果
2015-10-23 10:55 3331先看一下图,有个直观的了解,向下拖动handle就“开门了”: ... -
保证图片长宽比的同时拉伸图片ImageView
2015-10-16 15:40 3677按比例放大图片,不拉伸失真 import android. ...
相关推荐
为优化界面,通过自定义View实现炫酷跑马灯效果,图片的优化,有三种形式实现(自定义实现最炫酷)
通过LabVIEW虚拟仪器编程软件,以布尔灯的形式实现跑马灯的连续闪烁,闪烁间隔可以自行调节。
主要介绍了Android基于TextView不获取焦点实现跑马灯效果,结合实例形式分析了Android基于TextView实现跑马灯的功能与布局相关技巧,需要的朋友可以参考下
主要介绍了jQuery实现适用于移动端的跑马灯抽奖特效,结合实例形式分析了jQuery结合时间函数动态操作页面元素实现的跑马灯抽奖功能相关操作技巧,需要的朋友可以参考下
PB口与8个LED灯逆序连接,通过按键控制可以选择不同的运行模式,实现 多种跑马灯的运行模式。 硬件原理框图 电路图 接口芯片简介 (1)AT89C52 AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。 AT89C52是一个...
主要介绍了基于Marquee.js插件实现的跑马灯效果,结合实例形式给出了Marquee.js插件的定义及具体使用方法,需要的朋友可以参考下
PB口与8个LED灯逆序连接,通过按键控制可以选择不同的运行模式,实现 多种跑马灯的运行模式。 硬件原理框图 电路图 接口芯片简介 (1)AT89C52 AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。 AT89C52是一个...
主要介绍了Android基于TextView实现的跑马灯效果,以完整实例形式分析了Android使用TextView通过属性设置及功能代码实现跑马灯效果的相关技巧,需要的朋友可以参考下
通过随机选择的跑马灯实现随机展示红包金额的软件app,用户点击开始游戏后并再次点击停止游戏后跑马灯将停留在某一实际展示面额上,有提示框展示具体详情,可以通过自主控制跑马灯序列的可选中形式、跑马灯序列的...
主要介绍了jQuery实现图片走马灯效果的原理,结合实例形式较为详细的分析了jQuery实现走马灯的相关html页面设计、css样式布局与jQuery相关函数的使用,需要的朋友可以参考下
在嵌入式项目开发中,LED灯的操作是一定要会的,也是基础中的基础,比如用51单片机写个跑马灯,这不简单嘛,定义一个数组把那8个跑马灯存起来,然后搞个for循环不就可以了嘛,但是,实际工作开发中写一个跑马灯可不...
13.图表等比例-使图片始终保持设定比例缩放等供3种不同形式; 14.回到顶部-点击回到浏览器顶部; 15.漂浮窗-小漂浮窗广告; 16.图集展示-偶尔能用到; 17.滚屏效果-手指上下滑动或鼠标滚轮滚动切换页面,可自己配...
主要介绍了JS基于面向对象实现的选项卡效果,结合实例形式分析了javascript基于面向对象技术动态操作页面元素的流程与相关注意事项,需要的朋友可以参考下
2:对于文字较长的站点,以一跑马灯的形式显示; 3:有对应接口,可以实时显示车辆位置; 4:如果要滑动,可以结合Scroll(垂直滑动)或者HorizontalScrollView(水平滑动)或者Scroll+ HorizontalScrollView(上下左右...
Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在...
44、ImageSwitcher animation gesture实现可以滑动的跑马灯 45、下载状态栏显示下载进度 46、Gallery3d效果 47、ListView 上拉加载更多效果 48、异步加载图片的二级缓存技术 49、QQ的好友列表展示效果 50、...
44、ImageSwitcher animation gesture实现可以滑动的跑马灯 45、下载状态栏显示下载进度 46、Gallery3d效果 47、ListView 上拉加载更多效果 48、异步加载图片的二级缓存技术 49、QQ的好友列表展示效果 50、...
Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在...
S051: 跑马灯程序 S052: 四位数码管动态扫描程序,主频为4MHz S053: 四位数码管动态扫描主程序,采用模块化编程 S054: 记录按钮按下次数并显示在四位数码管上 S055: 三按键读取程序,控制四位数码管内容变化 S056: 4...
javascript字符串操作以及跑马灯实例 javascript数组和字典以及for循环 javascript条件语句 javascript函数的定义 Dom直接选择器 Dom间接选择器 示例之模态对话框 示例之全选和反选以及取消 javascript必须加分号 ...