Android Launcher研究---桌面應(yīng)用快捷方式的開發(fā)!

大家好蹬铺,今天我給大家分享的是Launcher桌面快捷圖標(biāo)的開發(fā)越平,我們都知道快捷圖標(biāo)有兩部分組成,一部分是應(yīng)用的圖標(biāo)仰禀,另一部分就是應(yīng)用的名稱侮叮。其實Launcher中的快捷圖標(biāo)只是繼承了TextView控件,重繪了一下悼瘾,將背景弄成淺灰色(具體是什么顏色我也不知道)的橢圓背景囊榜,顯示的文字顏色則是白色审胸。TextView有android:drawableTop;drawableBottom(上下左右我這里就不全寫出來了)屬性,用來顯示應(yīng)用的圖標(biāo)卸勺。

廢話不多說了砂沛,直接上例子,大家一步一步來曙求,多敲敲代碼碍庵,成長快一點。

第一步:新建一個Android工程悟狱,命名為ApplicationDemo.如下圖:

image.png

第二步:在values目錄下新建colors.xml文件静浴,定義一些要用的顏色,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#FFFFFF</color>
    <color name="black">#000000</color>     
    <color name="bubble_dark_background">#B2191919</color>
</resources>

第三步:也就是重點了挤渐,新建一個BubbleTextView類苹享,繼承TextView,代碼如下:

package com.tutor.application;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.text.Layout;
import android.util.AttributeSet;
import android.widget.TextView;
public class BubbleTextView extends TextView {
    private static final int CORNER_RADIUS = 8;
    private static final int PADDING_H = 5;
    private static final int PADDING_V = 1;
    private final RectF mRect = new RectF();
    private Paint mPaint;
    public BubbleTextView(Context context) {
        super(context);
        init();
    }
    public BubbleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    public BubbleTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }
    private void init() {
        setFocusable(true);
        // We need extra padding below to prevent the bubble being cut.
        setPadding(PADDING_H, 0, PADDING_H, PADDING_V);
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint.setColor(getContext().getResources()
                .getColor(R.color.bubble_dark_background));
    }
    @Override
    protected void drawableStateChanged() {
        invalidate();
        super.drawableStateChanged();
    }
    @Override
    public void draw(Canvas canvas) {
        final Layout layout = getLayout();
        final RectF rect = mRect;
        final int left = getCompoundPaddingLeft();
        final int top = getExtendedPaddingTop();
        rect.set(left + layout.getLineLeft(0) - PADDING_H,
                 top + layout.getLineTop(0) - PADDING_V,
                 Math.min(left + layout.getLineRight(0) + PADDING_H,
                          getScrollX() + getRight() - getLeft()),
                 top + layout.getLineBottom(0) + PADDING_V);
        canvas.drawRoundRect(rect, CORNER_RADIUS, CORNER_RADIUS, mPaint);
        super.draw(canvas);
    }
}

第四步:修改main.xml布局文件,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:drawableTop="@drawable/icon"
        android:text="ApplicationDemo"
        android:textColor="@color/black"
        />
    <com.tutor.application.BubbleTextView
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/icon" 
        android:textColor="@color/white"
        android:text="ApplicationDemo"
    />
</LinearLayout>

第五步:修改AndroidManifest.xml文件浴麻,注意這里我們在Activity里增加了一個透明的樣式得问,Launcher其實就是透明的Activity。

代碼如下(第8行代碼):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.tutor.application"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ApplicationDemo"
                  android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="7" />
</manifest> 

第六步:運行上述工程软免,查看效果如下:

image.png

將android:drawableLeft修改為android:drawableTop宫纬,效果如下:
image.png

創(chuàng)作不易喜歡的話記得點擊+關(guān)注哦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市膏萧,隨后出現(xiàn)的幾起案子漓骚,更是在濱河造成了極大的恐慌,老刑警劉巖榛泛,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件认境,死亡現(xiàn)場離奇詭異,居然都是意外死亡挟鸠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門亩冬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艘希,“玉大人,你說我怎么就攤上這事硅急「蚕恚” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵营袜,是天一觀的道長撒顿。 經(jīng)常有香客問我,道長荚板,這世上最難降的妖魔是什么凤壁? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任吩屹,我火速辦了婚禮,結(jié)果婚禮上拧抖,老公的妹妹穿的比我還像新娘煤搜。我一直安慰自己,他們只是感情好唧席,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布擦盾。 她就那樣靜靜地躺著,像睡著了一般淌哟。 火紅的嫁衣襯著肌膚如雪迹卢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天徒仓,我揣著相機與錄音腐碱,去河邊找鬼。 笑死蓬衡,一個胖子當(dāng)著我的面吹牛喻杈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狰晚,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼筒饰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了壁晒?” 一聲冷哼從身側(cè)響起瓷们,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秒咐,沒想到半個月后谬晕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡携取,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年攒钳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雷滋。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡不撑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晤斩,到底是詐尸還是另有隱情焕檬,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布澳泵,位于F島的核電站实愚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腊敲,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一击喂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兔仰,春花似錦茫负、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榕吼,卻和暖如春饿序,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羹蚣。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工原探, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顽素。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓咽弦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胁出。 傳聞我的和親對象是個殘疾皇子型型,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容