public class
TextView
extends View
implements ViewTreeObserver.OnPreDrawListener
java.lang.Object
? android.view. View
? android.widget.TextView
TextView類繼承View類,實現(xiàn)了OnPreDrawListener接口,其直接子類有:Button, CheckedTextView, Chronometer, DigitalClock, EditText, TextClock;非直接子類有:AutoCompleteTextView, CheckBox, CompoundButton, ExtractEditText, MultiAutoCompleteTextView, RadioButton, Switch, ToggleButton。
TextView是Android中最常用的控件,主要承擔(dān)文本顯示的任務(wù),任何APP都不可避免的會用到它。同時,TextView的屬性和方法在所有控件中也是算比較多的,我們沒必要也很難記住所有屬性和方法,在需要時查找API即可,這也是“帶你去看API”模塊設(shè)立的目的。
TextView常用屬性和方法參見下表:
http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-1.png" alt="這里寫圖片描述" />
使用表中部分屬性展示一下運行效果,API中還有一些不太常用的屬性和方法,讀者可以自行運行測試其效果。下面結(jié)合一個小實例對上面的屬性進行學(xué)習(xí),代碼如下:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="New TextNew TextNew TextNew TextNew TextNew TextNew TextNew TextNew Text"
android:textColor="#ff1911"
android:textSize="24sp"
android:singleLine="true"
android:gravity="center"
android:textStyle="bold"
android:drawableRight="@android:drawable/ic_lock_lock"
android:id="@+id/textView" />
這里設(shè)置了singleLine屬性,在文字很多的情況下會以省略號的形式顯示,設(shè)置了drawableRight屬性,會在控件最右邊顯示一個圖片,顯示效果如下圖:
http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-2.png" alt="這里寫圖片描述" />
在設(shè)置單行模式,而文字內(nèi)容又特別多的情況下,除了上面的省略號顯示方式,還有沒有其他方式呢?生活中我們可以見到各式各樣的LED廣告顯示屏,它們是通過跑馬燈的方式顯示廣告,這種顯示方式一方面解決了長信息展示的問題,另一方面也更容易吸引路人的目光。Android中可不可以實現(xiàn)呢?下面通過一個實例進行研究,代碼如下:
<TextView
android:id="@+id/tv_marquee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="這是跑馬燈的效果這是跑馬燈的效果這是跑馬燈的效果這是跑馬燈的效果">
</TextView>
這里涉及到了幾個上面表格中沒有的屬性,進行介紹: ? ellipsize屬性:主要解決文本長度長于控件寬度的問題,主要有幾個值:
http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-3.png" alt="這里寫圖片描述" />
如果你覺得這還不夠炫,可以添加代碼讓字體閃爍起來,MainActivity添加如下代碼:
public class MainActivity extends Activity {
private int temp = 0;
private TextView tv_marquee;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_marquee = (TextView)findViewById(R.id.tv_marquee);
spark();
}
public void spark() {
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {//UI線程上運行
public void run() {
if (temp == 0) {
temp = 1;
tv_marquee.setTextColor(Color.YELLOW);
} else {
if (temp == 1) {
temp = 2;
tv_marquee.setTextColor(Color.TRANSPARENT);
} else if (temp == 2){
temp = 3;
tv_marquee.setTextColor(Color.GREEN);
} else {
temp = 0;
tv_marquee.setTextColor(Color.RED);
}
}
}
});
}
};
timer.schedule(timerTask, 1, 100);
}
}
這里用到了Timer和TimerTask兩個計時類,其中TimerTask是一個抽象類,有個抽象的run方法需要覆寫。創(chuàng)建一個Timer對象,并調(diào)用Timer類的schedule方法可以實現(xiàn)間隔操作的效果。schedule方法有三個參數(shù): 第一個參數(shù)是TimerTask對象,第二個參數(shù)是執(zhí)行延遲時間,第三個參數(shù)為間隔周期。 同時,這里定義了一個臨時變量,通過臨時變量的循環(huán)改變動態(tài)改變字體的顏色,間接實現(xiàn)了字體閃爍的效果。 顯示效果如下圖:
http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-4.png" alt="這里寫圖片描述" />