鍍金池/ 教程/ Android/ 第一章-好玩的TextView
第十八章-ViewPager+FragmentStatePagerAdapter實(shí)現(xiàn)仿微信Tab
第十五章-GridView實(shí)現(xiàn)動(dòng)態(tài)添加和刪除子項(xiàng)
第九章-進(jìn)度條ProgressBar
第十二章-經(jīng)典的ListView
第十四章-GridView控件
第八章-時(shí)間相關(guān)控件
第七章-下拉框Spinner控件
第二章-EditText探秘
第二十章-Android菜單之上下文菜單
第十一章-各種對(duì)話框Dialog集錦
第二十一章-Android菜單之子菜單
第六章-切換類(lèi)TextSwitcher和ImageSwitcher
第十七章-ViewPager切換界面
第五章-開(kāi)關(guān)按鈕ToggleButton和Switch
第二十二章-PopupWindow浮動(dòng)窗
第十六章-幻燈片ViewFlipper
第二十四章-RecyclerView動(dòng)態(tài)添加、刪除及點(diǎn)擊事件
第三章-交互之王Button控件
第二十三章-全新控件RecyclerView
第一章-好玩的TextView
第十三章-ListView擴(kuò)展(多選、全選、反選)
第四章-玩轉(zhuǎn)單選和多選按鈕
第十章-可以拖動(dòng)的ProgressBar-SeekBar
第十九章-Android菜單之選項(xiàng)菜單

第一章-好玩的TextView

   public class
TextView
extends View
implements ViewTreeObserver.OnPreDrawListener
java.lang.Object
   ?    android.view. View
       ?    android.widget.TextView
TextView類(lèi)繼承View類(lèi),實(shí)現(xiàn)了OnPreDrawListener接口,其直接子類(lèi)有:Button, CheckedTextView, Chronometer, DigitalClock, EditText, TextClock;非直接子類(lèi)有:AutoCompleteTextView, CheckBox, CompoundButton, ExtractEditText, MultiAutoCompleteTextView, RadioButton, Switch, ToggleButton。

TextView是Android中最常用的控件,主要承擔(dān)文本顯示的任務(wù),任何APP都不可避免的會(huì)用到它。同時(shí),TextView的屬性和方法在所有控件中也是算比較多的,我們沒(méi)必要也很難記住所有屬性和方法,在需要時(shí)查找API即可,這也是“帶你去看API”模塊設(shè)立的目的。

TextView常用屬性和方法參見(jiàn)下表:

http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-1.png" alt="這里寫(xiě)圖片描述" />

使用表中部分屬性展示一下運(yùn)行效果,API中還有一些不太常用的屬性和方法,讀者可以自行運(yùn)行測(cè)試其效果。下面結(jié)合一個(gè)小實(shí)例對(duì)上面的屬性進(jìn)行學(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屬性,在文字很多的情況下會(huì)以省略號(hào)的形式顯示,設(shè)置了drawableRight屬性,會(huì)在控件最右邊顯示一個(gè)圖片,顯示效果如下圖:

http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-2.png" alt="這里寫(xiě)圖片描述" />

在設(shè)置單行模式,而文字內(nèi)容又特別多的情況下,除了上面的省略號(hào)顯示方式,還有沒(méi)有其他方式呢?生活中我們可以見(jiàn)到各式各樣的LED廣告顯示屏,它們是通過(guò)跑馬燈的方式顯示廣告,這種顯示方式一方面解決了長(zhǎng)信息展示的問(wèn)題,另一方面也更容易吸引路人的目光。Android中可不可以實(shí)現(xiàn)呢?下面通過(guò)一個(gè)實(shí)例進(jì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>

這里涉及到了幾個(gè)上面表格中沒(méi)有的屬性,進(jìn)行介紹: ? ellipsize屬性:主要解決文本長(zhǎng)度長(zhǎng)于控件寬度的問(wèn)題,主要有幾個(gè)值:

  1. end-省略號(hào)方式,省略號(hào)在尾部
  2. start-省略號(hào)在頭部
  3. middle-省略號(hào)在中部
  4. marquee-跑馬燈方式顯示 ? focusable屬性:控件獲得焦點(diǎn) ? focusableInTouchMode屬性:針對(duì)觸摸屏獲得當(dāng)前焦點(diǎn) ? marqueeRepeatLimit屬性:設(shè)置跑馬燈無(wú)限制次數(shù)循環(huán) ? scrollHorizontally屬性:水平方式顯示 顯示效果如下:

http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-3.png" alt="這里寫(xiě)圖片描述" />

如果你覺(jué)得這還不夠炫,可以添加代碼讓字體閃爍起來(lái),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線程上運(yùn)行
                    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兩個(gè)計(jì)時(shí)類(lèi),其中TimerTask是一個(gè)抽象類(lèi),有個(gè)抽象的run方法需要覆寫(xiě)。創(chuàng)建一個(gè)Timer對(duì)象,并調(diào)用Timer類(lèi)的schedule方法可以實(shí)現(xiàn)間隔操作的效果。schedule方法有三個(gè)參數(shù): 第一個(gè)參數(shù)是TimerTask對(duì)象,第二個(gè)參數(shù)是執(zhí)行延遲時(shí)間,第三個(gè)參數(shù)為間隔周期。 同時(shí),這里定義了一個(gè)臨時(shí)變量,通過(guò)臨時(shí)變量的循環(huán)改變動(dòng)態(tài)改變字體的顏色,間接實(shí)現(xiàn)了字體閃爍的效果。 顯示效果如下圖:

http://wiki.jikexueyuan.com/project/twenty-four-Scriptures/images/1-4.png" alt="這里寫(xiě)圖片描述" />