您的位置:首页 > 移动开发 > Android开发

Android桌面应用快捷程序的开发

2015-01-07 14:59 337 查看
快捷图标有两部分组成,一部分是应用的图标,另一部分就是应用的名称。其实Launcher中的快捷图标只是继承了TextView控件,重绘了一下,将背景弄成浅灰色(具体是什么颜色我也不知道)的椭圆背景,显示的文字颜色则是白色。TextView有android:drawableTop等属性,用来显示应用的图标。





创建BuddleTextView类:

package com.lyc;

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 BuddleTextView 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 BuddleTextView(Context context)
{

super(context);

init();

}

public
BuddleTextView(Context context, AttributeSet attrs)
{

super(context, attrs);

init();

}

public
BuddleTextView(Context context, AttributeSet attrs, int defStyle)
{

super(context, attrs, defStyle);

init();

}

private void init() {

// TODO Auto-generated method
stub

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));

}

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);

}

}

配置文件

<?xml version="1.0"
encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.lyc"

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.Translucent"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN"
/>

<category
android:name="android.intent.category.LAUNCHER"
/>

</intent-filter>

</activity>

<activity
android:name=".BuddleTextView"/>

</application>

</manifest>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: