欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

自定義TextView跑馬燈效果可控制啟動(dòng)/停止/速度/焦點(diǎn)

 更新時(shí)間:2013年01月11日 17:35:39   投稿:whsnow  
Android自帶的跑馬燈效果不太好控制,不能控制速度,不能即時(shí)停止和啟動(dòng),而且還受焦點(diǎn)的影響不已,由于項(xiàng)目需求需所以自己寫(xiě)了一個(gè)自定義的TextView,感興趣的朋友可以了解下

Android自帶的跑馬燈效果不太好控制,不能控制速度,不能即時(shí)停止和啟動(dòng),而且還受焦點(diǎn)的影響不已。由于項(xiàng)目需求需要用的可控制性高的跑馬燈效果,所以自己寫(xiě)了一個(gè)自定義的TextView

注意:在布局文件引用本view時(shí),paddingLeft,paddingRigh都必須為0dp,需要增加這兩個(gè)屬性的,大家可以自行修改代碼。
android:ellipsize="marquee" android:singleLine="true" 這兩個(gè)屬性也要加上

復(fù)制代碼 代碼如下:

public class MarqueeText extends TextView implements Runnable {
private int currentScrollX;// 當(dāng)前滾動(dòng)的位置
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;// 滾動(dòng)速度
scrollTo(currentScrollX, 0);
if (isStop) {
return;
}
if (getScrollX() <= -(this.getWidth())) {
scrollTo(textWidth, 0);
currentScrollX = textWidth;
// return;
}
postDelayed(this, 5);
}
// 開(kāi)始滾動(dòng)
public void startScroll() {
isStop = false;
this.removeCallbacks(this);
post(this);
}
// 停止?jié)L動(dòng)
public void stopScroll() {
isStop = true;
}
// 從頭開(kāi)始滾動(dòng)
public void startFor0() {
currentScrollX = 0;
startScroll();
}
}

布局文件:
復(fù)制代碼 代碼如下:

<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="從頭開(kāi)始" />
<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

復(fù)制代碼 代碼如下:

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 桌面圖標(biāo)右上角顯示未讀消息數(shù)字

    Android 桌面圖標(biāo)右上角顯示未讀消息數(shù)字

    本文主要介紹了Android 桌面圖標(biāo)右上角顯示未讀消息數(shù)字的方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • Android基于MLKit實(shí)現(xiàn)條形碼掃碼的代碼示例

    Android基于MLKit實(shí)現(xiàn)條形碼掃碼的代碼示例

    這篇文章將借助開(kāi)源庫(kù)?MLKit?實(shí)現(xiàn)條形碼掃描,對(duì)于商品條形碼也可以很好地識(shí)別成功,該庫(kù)的使用內(nèi)容非常豐富,除了條碼識(shí)別,還有文字識(shí)別、圖像標(biāo)記、人臉檢測(cè)等等,本文篇文章就只介紹最基本的條形碼掃描使用,需要的朋友可以參考下
    2023-08-08
  • Android在linux下刷機(jī)教程

    Android在linux下刷機(jī)教程

    android 在linux下刷機(jī),我們只需要下載相應(yīng)的zip包,然后一條命令就可以完成,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2016-09-09
  • Android下拉刷新控件SwipeRefreshLayout源碼解析

    Android下拉刷新控件SwipeRefreshLayout源碼解析

    這篇文章主要為大家詳細(xì)解析Android下拉刷新控件SwipeRefreshLayout源碼,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android Service綁定過(guò)程完整分析

    Android Service綁定過(guò)程完整分析

    這篇文章主要為大家詳細(xì)介紹了Android Service綁定完整過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android開(kāi)發(fā)解決字符對(duì)齊問(wèn)題方法

    Android開(kāi)發(fā)解決字符對(duì)齊問(wèn)題方法

    這篇文章主要為大家介紹了Android開(kāi)發(fā)解決字符對(duì)齊問(wèn)題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Android 創(chuàng)建與解析XML(四)——詳解Pull方式

    Android 創(chuàng)建與解析XML(四)——詳解Pull方式

    本篇文章主要介紹了Android創(chuàng)建與解析XML(二)——詳解Pull方式,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2016-11-11
  • Android自動(dòng)填充短信驗(yàn)證碼功能(demo)

    Android自動(dòng)填充短信驗(yàn)證碼功能(demo)

    在項(xiàng)目開(kāi)發(fā)中為了給用戶(hù)帶來(lái)極好的體驗(yàn)效果,通常需要實(shí)現(xiàn)驗(yàn)證碼的自動(dòng)填充功能,怎么實(shí)現(xiàn)呢?今天小編給大家分享Android自動(dòng)填充短信驗(yàn)證碼功能的實(shí)現(xiàn)方法,需要的朋友參考下吧
    2017-02-02
  • 最新評(píng)論