Android跑马灯效果可控制的代码实现

来源:爱站网时间:2019-03-18编辑:网友分享
安卓的自带跑马灯控制不好,它不能控制速度,同时也不能立即停止和启动,这样就让人觉得好烦躁,今天爱站技术频道小编为大家带来Android跑马灯效果可控制的代码实现。

安卓的自带跑马灯控制不好,它不能控制速度,同时也不能立即停止和启动,这样就让人觉得好烦躁,今天爱站技术频道小编为大家带来Android跑马灯效果可控制的代码实现。

注意:在布局文件引用本view时,paddingLeft,paddingRigh都必须为0dp,需要增加这两个属性的,大家可以自行修改代码。
android:ellipsize="marquee" android:singleLine="true" 这两个属性也要加上

 

public class MarqueeText extends TextView implements Runnable {
private int currentScrollX;// 当前滚动的位置
private boolean isStop = false;
private int textWidth;
private boolean isMeasure = false;
public MarqueeText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MarqueeText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MarqueeText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
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 run() {
currentScrollX -= 2;// 滚动速度
scrollTo(currentScrollX, 0);
if (isStop) {
return;
}
if (getScrollX() scrollTo(textWidth, 0);
currentScrollX = textWidth;
// return;
}
postDelayed(this, 5);
}
// 开始滚动
public void startScroll() {
isStop = false;
this.removeCallbacks(this);
post(this);
}
// 停止滚动
public void stopScroll() {
isStop = true;
}
// 从头开始滚动
public void startFor0() {
currentScrollX = 0;
startScroll();
}
}


布局文件:

 

 

 


xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

MainActivity

 

 

 


public class MainActivity extends Activity {
private MarqueeText test;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test = (MarqueeText) this.findViewById(R.id.test);
}
public void start(View v) {
test.startScroll();
}
public void stop(View v) {
test.stopScroll();
}
public void startFor0(View v){
test.startFor0();
}
}

上文是爱站技术频道小编为大家搜集到的相关介绍,希望对你了解Android跑马灯效果可控制的代码实现有所帮助!

上一篇:android下载时文件名是中文报错的解决方案

下一篇:Android-手势交互的代码实现

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载