发布于 2016-04-17 12:43:25 | 307 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Android移动端操作系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。


Android自带的跑马灯效果不太好控制,不能控制速度,不能即时停止和启动,而且还受焦点的影响蛋疼不已。由于项目需求需所以自己写了一个自定义的TextView,感兴趣的朋友可以了解下
Android自带的跑马灯效果不太好控制,不能控制速度,不能即时停止和启动,而且还受焦点的影响蛋疼不已。由于项目需求需要用的可控制性高的跑马灯效果,所以自己写了一个自定义的TextView

注意:在布局文件引用本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() <= -(this.getWidth())) { 
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(); 
} 
} 

布局文件:
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<Button 
android:id="@+id/start" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:onClick="start" 
android:text="走起" /> 
<Button 
android:id="@+id/stop" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:onClick="stop" 
android:text="停止" /> 
<Button 
android:id="@+id/startfor0" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:onClick="startFor0" 
android:text="从头开始" /> 
<simtice.demo.marqueetext.MarqueeText 
android:id="@+id/test" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#339320" 
android:ellipsize="marquee" 
android:singleLine="true" 
android:text="这才是真正的文字跑马灯效果这才是真正的字跑马灯效果这才是真正的" 
android:textColor="#000000" 
android:textSize="20dp" > 
</simtice.demo.marqueetext.MarqueeText> 
</LinearLayout> 
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(); 
} 
} 

        



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务