作者:程序员小冰,GitHub主页:https://github.com/QQ986945193
新浪微博:http://weibo.com/mcxiaobing
首先给大家看一下我们今天这个最终实现的效果图:
这个主要是用到的自定义TextView,然后里面开一个线程进行,进行滚动效果。
我这里写了两个自定义TextView,分别是从左到右,以及从右到左。利用滚动
的偏移量,进行设置滚动的位置。然后利用一个变量,进行区分是否是滚动状态。
我这里给大家看一下代码吧,只给大家看一下其中一个自定义View的。
package davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* @author :程序员小冰
* @新浪微博 :http://weibo.com/mcxiaobing
* @GitHub: https://github.com/QQ986945193
* @CSDN博客: http://blog.csdn.net/qq_21376985
* @码云OsChina :http://git.oschina.net/MCXIAOBING
* <p/>
* 从左到右 滚动自定义TextView
*/
public class AutoText extends TextView implements Runnable {
private int currentScrollX;
private boolean isStop = false;
private int textWidth;
private boolean isMeasure = false;
public AutoText(Context context) {
super(context);
}
public AutoText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AutoText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!isMeasure) {
getTextWidth();
isMeasure = true;
}
}
/**
* 获取文字宽度
*/
private void getTextWidth() {
Paint paint = this.getPaint();
String str = this.getText().toString();
textWidth = (int) paint.measureText(str);
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text, type);
this.isMeasure = false;
}
@Override
public void run() {
currentScrollX -= 2;
scrollTo(currentScrollX, 0);
if (isStop) {
return;
}
if (getScrollX() <= -(this.getWidth())) {
scrollTo(textWidth, 0);
currentScrollX = textWidth;
}
postDelayed(this, 5);
}
public void startScroll() {
isStop = false;
this.removeCallbacks(this);
post(this);
}
public void stopScroll() {
isStop = true;
}
public void startFor0() {
currentScrollX = 0;
startScroll();
}
}
布局我就不写了,直接引用这个view就行了。然后java类中看一下吧,其实
也是直接调用它的方法。
package davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject.MarqueeText;
import davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject.R;
/**
* @author :程序员小冰
* @新浪微博 :http://weibo.com/mcxiaobing
* @GitHub: https://github.com/QQ986945193
* @CSDN博客: http://blog.csdn.net/qq_21376985
* @码云OsChina :http://git.oschina.net/MCXIAOBING
*/
public class MainActivity extends Activity {
private MarqueeText test;
private AutoText auto_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test = (MarqueeText) findViewById(R.id.test);
auto_text = (AutoText) findViewById(R.id.auto_text);
}
public void start(View v) {
test.startScroll();
}
public void stop(View v) {
test.stopScroll();
}
public void startFor0(View v) {
test.startFor0();
}
}
好了。到此结束吧,不懂得请留言或者私信。源代码需要的可以去
(AndroidStudio版)github下载地址:
https://github.com/QQ986945193/DavidMarqueeControlProject
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
android 跑马灯效果 android 跑马灯效果
Android文字跑马灯效果,TextView的文字跑马灯效果
Android 文字跑马灯和上下翻滚效果
多种方式实现多种效果的自定义跑马灯效果,完整项目,注释详尽,自由度高,包括垂直滚动和水平滚动
Android跑马灯实现的三种方式
android跑马灯效果,失去焦点也可以实现,里面的代码有注释,如果还是看不懂请联系我
标题和描述中提到的“跑马灯效果”是指在`TextView`中,当文本内容过长无法完全显示时,文本会从一侧滚动到另一侧,形成循环滚动的效果。这种效果在通知栏、广告条或者状态栏等场景中较为常见。 实现跑马灯效果的...
利用viewpaper 实现跑马灯图片轮换 并可设置10多种动画效果。是从实际项目中抽取出的demo,完整代码导入开发环境就可以运行,仔细查看demo中跑马灯图片有惊喜哦!
Android跑马灯,可以控制速度,并对对于文本长度大于屏幕分辨率情况,也可适用,史上最强的跑马灯实现。
Android 实现水平、垂直方向文字跑马灯效果demo
Android文字跑马灯控件(文本自动滚动控件,左右移动.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android 自定义ViewGroup实现整个Item布局竖直跑马灯效果,详细看我的博客讲解
android三种方式实现TextView跑马灯效果
android TextView 跑马灯效果; 具体说明可以看这里 http://blog.csdn.net/q610098308/article/details/49451537
分享一个Android中实现跑马灯效果
Android ImageView图片循环跑马灯效果源码
RecyclerView上下自动无限滚动,跑马灯效果,具体效果有2种, 1.每次移动距离是一个item的高度 2.持续向上移动
完美实现android 滚动字幕(跑马灯效果),简单实用