日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

andrioid项目开发之教程 桌面

發(fā)布時間:2024/1/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 andrioid项目开发之教程 桌面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

視頻課:【免費】跨平臺APP JQuery Mobile開發(fā)-1-初探移動開發(fā)-張晨光的在線視頻教程-CSDN程序員研修院

學習內(nèi)容

?手機桌面管理的技巧

?如何實現(xiàn)實時壁紙

?如何創(chuàng)建快捷方式

?如何創(chuàng)建桌面小控件

?如何創(chuàng)建文件夾

能力目標 ?

?了解手機桌面管理的技巧

?熟練掌握如何實現(xiàn)實時壁紙

?熟練掌握如何創(chuàng)建快捷方式

?熟練掌握如何創(chuàng)建桌面小控件

?熟練掌握如何創(chuàng)建文件夾

本章簡介

????????Android被認為是新一代的移動操作系統(tǒng),它與傳統(tǒng)的移動操作系統(tǒng)存在很大的區(qū)別。傳統(tǒng)的移動操作系統(tǒng)無論在功能還是外觀上,都與PC操作系統(tǒng)有很大的區(qū)別,而Android是目前比較接近PC操作系統(tǒng)的移動操作系統(tǒng)。Android最吸引人的功能恐怕就是可以直接顯示在屏幕上的“小玩意”:窗口小部件、快捷方式、實時文件夾。這些組件都充分體現(xiàn)了新一代移動操作系統(tǒng)的特征。在本節(jié)中,我們將結(jié)合具體的案例深入學習Android中這些與桌面組件相關(guān)的知識。

核心技能部分

????????當拿到Android手機后我們第一眼看到的就是桌面,這個手機桌面和PC機中Windows的桌面類似。桌面上通常用來放置一些常用的程序和功能組件。如圖7.1.1所示。

?

圖7.1.1 手機桌面

????????在手機桌面上我們首先看到的是壁紙,也就是手機桌面上的那張圖片,在桌面上排列著多個圖標,這些圖標分為三大類:快捷方式、實時文件夾、桌面控件。其中快捷方式與實時文件夾只占用桌面的一個擺放位置,而桌面控件則可以占據(jù)多個擺放位置。

????????我們可以通過程序管理Android桌面,包括改變系統(tǒng)壁紙、快捷方式、實時文件夾與桌面控件等。這也正是本章中我們要重點學習的內(nèi)容。

7.1?手機桌面的管理

????????默認情況下,原生的Android系統(tǒng)在初始狀態(tài)下只會顯示一個壁紙以及Google Search和Home screen tips在桌面上。其中Google Search是屏幕最上方的搜索條;Home screen tips是搜索條下面的提示框,如下圖7.1.2所示 。

?

圖7.1.2 默認桌面

桌面上顯示的圖標是可以進行刪除和天機的刪除桌面組件可以通過以下兩步來完成:

(1)?在屏幕上長按指定組件,直到桌面下方出現(xiàn)垃圾桶。

(2)?將指定組件拖到桌面下方的垃圾桶中即可刪除,如下圖7.1.3所示。

?

圖7.1.3 刪除桌面圖標

添加桌面組件可以通過以下幾步來完成:

(1)?當系統(tǒng)顯示手機桌面時,長按手機屏幕空白區(qū)域,在桌面上顯示如圖7.1.4所示的菜單。

?

圖7.1.4 桌面菜單

(2)?以添加“快捷方式”為例,單擊圖7.1.4所示列表的“Shortcuts”菜單項,系統(tǒng)會顯示圖7.1.5的所示的界面。

?

圖7.1.5 選擇添加桌面快捷方式

(3)?以添加“ApiDemos”為例,選中圖7.1.5所示列表中的“ApiDemos”列表項,然后返回桌面將會看到圖7.1.6所示的界面,ApiDemos的快捷方式已經(jīng)出現(xiàn)在桌面上了。

?

圖7.1.6 桌面快捷方式

7.2?實時壁紙

????????手機桌面壁紙總是只顯示靜態(tài)圖片會略顯單調(diào),那么其實我們可以通過實時壁紙技術(shù)使手機桌面“動起來”。所謂實時壁紙就是指手機桌面不再是簡單的圖片,而是運行中的動畫,這個動畫是由程序?qū)崟r繪制的,因此被稱為實時壁紙。

在Android中開發(fā)實時壁紙需要繼承名為WallpaperService的類,并重寫相關(guān)方法。具體步驟如下:

(1)?創(chuàng)建一個繼承自WallpaperService的類。

(2)?重寫WallpaperService的onCreateEngine()方法,該方法返回一個WallpaperService.Engine類的對象。

(3)?實現(xiàn)WallpaperService.Engine類,重寫onVisibilityChanged()、onOffsetsChanged()方法。另外,由于WallpaperService.Engine類采用了與SurfaceView相同的繪圖機制,因此可以選擇性地重寫SurfaceHolder.Callback中的三個方法,重寫這些方法時可通過SurfaceHolder動態(tài)地繪制圖形。

????????按照7.1節(jié)所示的內(nèi)容,依次長按桌面—>Wallpapers—>Live wallpapers—>Cube,可以選擇Android系統(tǒng)默認提供的一個實時壁紙作為當前壁紙,設(shè)置完成后桌面效果如下圖7.1.7所示,整個立方體會沿著x軸的方向旋轉(zhuǎn)。

?

圖7.1.7 Cube效果

示例7.1

創(chuàng)建實時壁紙。

????????要求當系統(tǒng)進入預覽實時壁紙界面時,可以看到一個圓圈在不停地移動,如果7.1.8所示。單擊【Set Wallpaper】按鈕時,即可應用這個實時壁紙程序。然后當再次切換到Android系統(tǒng)界面,將可在桌面上看到圖7.1.9所示的效果。

?

圖7.1.8 實時壁紙預覽界面

?

圖7.1.9 自制實時壁紙效果圖

首先編寫一個繼承自WallpaperService的類來實現(xiàn)實時壁紙的相關(guān)服務,詳細代碼如下:

public?class?LiveWallpaperService extends?WallpaperService {// 實現(xiàn)WallpaperService必須實現(xiàn)的抽象方法@Overridepublic?Engine onCreateEngine() {// 返回自定義的Enginereturn?new?MyEngine();}class?MyEngine extends?Engine {// 記錄程序界面是否可見private?boolean?isVisibile;// 記錄當前當前用戶動作事件的發(fā)生位置private?float?touchX?= -1;private?float?touchY?= -1;// 記錄當前圓圈的繪制位置private?float?cx?= 15;private?float?cy?= 20;// 定義畫筆private?Paint mPaint?= new?Paint();// 定義一個HandlerHandler mHandler?= new?Handler();// 定義一個周期性執(zhí)行的任務private?final?Runnable drawTarget?= new?Runnable() {public?void?run() {drawFrame();}};@Overridepublic?void?onCreate(SurfaceHolder surfaceHolder) {super.onCreate(surfaceHolder);// 初始化畫筆mPaint.setColor(0xffffffff);mPaint.setAntiAlias(true);mPaint.setStrokeWidth(2);mPaint.setStrokeCap(Paint.Cap.ROUND);mPaint.setStyle(Paint.Style.STROKE);// 設(shè)置處理觸摸事件setTouchEventsEnabled(true);}@Overridepublic?void?onDestroy() {super.onDestroy();// 刪除回調(diào)mHandler.removeCallbacks(drawTarget);}@Overridepublic?void?onVisibilityChanged(boolean?visible) {isVisibile?= visible;// 當界面可見時候,執(zhí)行drawFrame()方法。if?(visible) {// 動態(tài)地繪制圖形drawFrame();} else?{// 如果界面不可見,刪除回調(diào)mHandler.removeCallbacks(drawTarget);}}@Overridepublic?void?onOffsetsChanged(float?xOffset, float?yOffset, float?xStep, float?yStep, int?xPixels, int?yPixels) {drawFrame();}@Overridepublic?void?onTouchEvent(MotionEvent event) {// 如果檢測到滑動操作if?(event.getAction() == MotionEvent.ACTION_MOVE) {touchX?= event.getX();touchY?= event.getY();} else?{touchX?= -1;touchY?= -1;}super.onTouchEvent(event);}// 定義繪制圖形的工具方法private?void?drawFrame() {// 獲取該壁紙的SurfaceHolderfinal?SurfaceHolder holder = getSurfaceHolder();Canvas c = null;try?{// 對畫布加鎖c = holder.lockCanvas();if?(c != null) {c.save();// 繪制背景色c.drawColor(0xff000000);// 在觸碰點繪制圓圈drawTouchPoint(c);// 繪制圓圈c.drawCircle(cx, cy, 80, mPaint);c.restore();}} finally?{if?(c != null)holder.unlockCanvasAndPost(c);}mHandler.removeCallbacks(drawTarget);// 調(diào)度下一次重繪if?(isVisibile) {cx?+= 15;cy?+= 20;// 如果cx、cy移出屏幕后從左上角重新開始if?(cx?> 320)cx?= 15;if?(cy?> 400)cy?= 20;// 指定0.1秒后重新執(zhí)行mDrawCube一次mHandler.postDelayed(drawTarget, 100);}}// 在屏幕觸碰點繪制圓圈private?void?drawTouchPoint(Canvas c) {if?(touchX?>= 0 && touchY?>= 0) {c.drawCircle(touchX, touchY, 40, mPaint);}}}}

在本Service類中重寫了WallpaperService.Engine的onVisibilityChanged()、onOffsetsChanged()方法,并指定了當桌面顯示時調(diào)用drawFrame()方法進行重繪,在drawFrame()方法中繪制完成后利用Handler對象指定0.1秒后重繪。

完成了Service類的編寫之后,接下來需要在功能清單文件中配置該Service,配置實時壁紙的Service時,需要指定運行實時壁紙所需要的權(quán)限及的編寫meta-data兩項內(nèi)容。詳細代碼如下所示:

<serviceandroid:name=".LiveWallpaperService"android:label="@string/app_name"android:permission="android.permission.BIND_WALLPAPER"?><!-- 為實時壁紙配置intent-filter --><intent-filter><action?android:name="android.service.wallpaper.WallpaperService"/></intent-filter><!-- 為實時壁紙配置meta-data --><meta-dataandroid:name="android.service.wallpaper"android:resource="@xml/livewallpaper"?/></service>

上面配置文件中指定了實時壁紙的meta-data放在xml/livewallpaper中定義,因此程序還需要在res/xml目錄下增加一個livewallpaper.xml的文件,此文件的代碼如下:

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

<wallpaper?xmlns:android="http://schemas.android.com/apk/res/android"/>

運行該程序,當程序啟動起來之后,切換到Android桌面,長按桌面,在彈出的“Add to Home screen”對話框中單擊Wallpapers列表項,然后再在彈出的“Select wallpaper from”對話框中單擊“Live wallpapers”列表項,最后選擇“打開程序”,單擊打開的預覽窗口中“Set wallpaper”按鈕,就可以在將我們的動態(tài)桌面設(shè)置為系統(tǒng)默認的桌面。

雖然本示例程序?qū)崿F(xiàn)的實時壁紙只是在桌面上繪制運動的圓形,程序功能比較簡單,但有關(guān)實時壁紙的知識點已經(jīng)講解的比較透徹。在實際的應用開發(fā)中我們可以根據(jù)自己的需求在系統(tǒng)桌面上繪制更加復雜美觀的動態(tài)圖形,從而實現(xiàn)漂亮的實時壁紙功能。

7.3?創(chuàng)建快捷方式

如果手機中應用程序安裝的太多,找起來會很費勁。這種情況在Windows中是一樣的,而Windows系統(tǒng)通過在桌面上為應用程序創(chuàng)建快捷方式來解決該問題。我們Android中有沒有類似的功能呢?答案是肯定的,Android系統(tǒng)也有快捷方式的類似的功能。在Android中實現(xiàn)快捷方式的添加有兩種情況:向快捷方式列表添加快捷方式和直接將快捷方式添加到桌面。在本節(jié)中我們會通過兩個案例分針對這兩種情況進行講解。

默認情況下,應用程序的快捷方式不會出現(xiàn)在圖7.1.5所示的列表(快捷方式列表)中,為了讓指定應用程序出現(xiàn)在快捷方式列表中,只需要在功能清單文件中配置該Activity時指定相應的<intent-filter…/>元素即可。

示例7.2

向快捷方式列表添加快捷方式。新建一個項目,在該項目中新創(chuàng)建一個Activity,Activity類的詳細代碼如下:

public?class?AddShortcutToList?extends?Activity {@Overrideprotected?void?onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Button btn = new Button(this);btn.setText("快捷方式列表中的快捷方式程序");setContentView(btn);}}

在功能清單文件中對這個Activity類進行設(shè)置,代碼如下:

<activityandroid:name="MainViewAddShortcut"android:label="@string/app_name"?><intent-filter><action?android:name="android.intent.action.MAIN"?/><action?android:name="android.intent.action.CREATE_SHORTCUT"?/><category?android:name="android.intent.category.LAUNCHER"?/></intent-filter></activity>

此處配置快捷方式的Activity時,必須得指定CREATE_SHORTCUT動作,只需要將這個Activity添加到任何的應用程序中即可。在該程序啟動后,快捷方式會自動添加到圖7.1.4所示的列表中,如下圖7.1.10所示。

在該程序啟動后,快捷方式會自動添加到圖7.1.5所示的列表中,如下圖7.1.10所示。當我們單擊這個列表項時,就會調(diào)用相對應的Activity程序。

?

圖7.1.10 列表中的快捷方式

示例7.3

直接將快捷方式放在桌面上。

在示例7.2中我們只是將快捷方式直接添加到Shortcuts列表中,為了方便,我們也可以通過廣播的方式直接將快捷方式添加到桌面上。這種應用在我們的平時所接觸到的程序中比較常見,比如當我們第一次運行一個程序時,它會提示我們是否在桌面上設(shè)置快捷方式就是通過這種技術(shù)實現(xiàn)的。

首先寫一個只顯示一個ImageView的Activity,然后在主布局文件中提供一個id為shortCut的按鈕,當用戶單擊這個按鈕時調(diào)用上面創(chuàng)建的Activity,將圖片顯示在屏幕上。

Activity類代碼:

public?class?ShortcutActivity extends?Activity implements?OnClickListener {@Overridepublic?void?onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.shortcut);Button btn = (Button) findViewById(R.id.shortCut);btn.setOnClickListener(this);}@Overridepublic?void?onClick(View view) {//指定安裝快捷方式的ActionIntent installShortCut =new?Intent("com.android.launcher.action.INSTALL_SHORTCUT");//指定快捷方式在桌面上的顯示名稱installShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "打開圖片");Parcelable icon =Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);installShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);Intent intent = new?Intent("com.hc.activity.DesktopActivity");installShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);sendBroadcast(installShortCut);}}

在功能清單文件中添加如下權(quán)限:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>

運行程序,會在桌面上生成如下圖7.1.11所示的快捷方式

圖7.1.11 桌面快捷方式

7.4?桌面小控件

????????所謂桌面小控件,指的是直接顯示在Android系統(tǒng)桌面上的小程序,比如圖7.1.1中的Google Seacher。一般來說, 我們可以把那些用戶經(jīng)常用到的程序,比如搜索框、指南針、時鐘、日歷等做成桌面控件,這樣用戶可以直接在桌面上看到程序的運行界面,非常方便。

????????桌面小控件是通過廣播的形式進行控制的,因此每個桌面小控件都對應一個BroadcastReceiver類。為了簡化桌面小控件的開發(fā),Android系統(tǒng)提供了一個名為AppWidgetProvider的BroadcastReceiver的子類。在開發(fā)桌面小控件時,我們只需要繼承這個類,并重寫它的不同狀態(tài)的生命周期方法,就可以非常方便地實現(xiàn)自己的需求。

AppWidgetProvider類里提供了如下四個不同的生命周期方法:

??onUpdate():負責更新桌面控件,它只有在小控件被用戶放到桌面上時才會被調(diào)用到。

??onDeleted():當一個或多個桌面小控件被刪除時回調(diào)這個方法。

??onEnabled():當接收到ACTION_APPWIDGET_ENABLED廣播時回調(diào)這個方法。

??onDisabled():當接收到ACTION_APPWIDGET_DISABLED廣播時回調(diào)這個方法。

一般來說,開發(fā)桌面小控件只需要定義一個AppWidgetProvider的子類,并重寫它的onUpdate()方法即可,重寫這個方法的步驟如下:

(1)?創(chuàng)建一個RemoteViews對象,創(chuàng)建該對象時可以加載指定的界面布局文件。

(2)?如果需要改變上一步所加載的界面布局文件的內(nèi)容,可以通過RemoteViews對象進行修改。

(3)?創(chuàng)建一個ComponentName對象。

(4)?調(diào)用AppWidgetManager更新桌面小控件。

示例7.4

自定義一個數(shù)字時鐘桌面程序,效果如下圖7.1.12所示。

????????為了實現(xiàn)程序,我們需要在布局文件中定義5個ImageView,分別用來顯示小時、分鐘以及它們之間的冒號。為了讓時鐘實時地顯示當前時間,程序需要每隔一分鐘更新一次界面,我們可以借助Handler實現(xiàn)。

?

圖7.1.12 桌面時鐘

首先編寫布局文件,在布局文件digitclock.xml中提供id值分別為img01、img02、img03、img04、img05的五個ImageView,用來顯示具體的時鐘界面。然后在res/xml目錄下新建一個名為appwidget_provider.xml的文件,該文件用來指定桌面小控件使用誰作為meta-data,它的詳細代碼如下:

????由于AppWidgetProvider繼承了BroadcastReceiver,所以從本質(zhì)上看它還是一個廣播,因此我們還需要在功能清單文件中使用<receiver/>元素來配置該廣播,配置該元素時需要為它指定相應的<intent-filter/>和<meta-data/>元素。代碼如下:

<receiver

????android:name=".DigitClock"

????android:label="@string/app_name"?>

????<!-- 將該BroadcastReceiver當成桌面小控件 -->

????<intent-filter>

????????<action?android:name="android.appwidget.action.APPWIDGET_UPDATE"?/>

????</intent-filter>

????<!-- 指定桌面小控件的meta-data -->

????<meta-data

????????android:name="android.appwidget.provider"

????????android:resource="@xml/appwidget_provider"?/>

</receiver>

????把該應用布置到模擬器上,按照7.1節(jié)所示的方法將該桌面程序安裝到桌面上,將會看到圖7.1.12所示的效果,時鐘會每隔一分鐘更新一次,與模擬器系統(tǒng)時間保持一致。

?7.5?實時文件夾

所謂的實時文件夾(LiveFoler)指的是用于顯示ContentProvider提供的數(shù)據(jù)的桌面組件。眾所周知ContentProvider組件用于向外提供數(shù)據(jù)訪問接口,一個應用程序可通過ContentProvider把自己的數(shù)據(jù)暴露出來,從而允許其它程序調(diào)用。ContentProvider除了可以供其它程序訪問外,還可以通過實時文件夾添加成桌面快捷方式。

當用戶把實時文件夾添加到桌面上之后,如果用戶單擊該實時文件夾,系統(tǒng)將會顯示從指定ContentProvider中查詢出來的全部數(shù)據(jù),這在很大程度上為用戶的使用帶來了便利。

實時文件夾可以訪問其它應用程序中的數(shù)據(jù),例如聯(lián)系人、電子郵件、短信等。從本質(zhì)上來說它也是一個Activity,只是該Activity并不會加載任何顯示界面,開發(fā)實時文件夾同樣需要繼承Activity,并重寫onCreate()方法,重寫此方法時建議大家按照如下步驟進行:

(1)?創(chuàng)建一個Intent。

(2)?調(diào)用該Intent的setData(Uri uri)方法,該Uri參數(shù)就是ContentProvider對外提供數(shù)據(jù)的Uri。進入該文件夾將會顯示此ContentProvider所返回的數(shù)據(jù)列表。

(3)?依次調(diào)用Intent對象的putExtra()方法來設(shè)置實時文件夾的圖標、標題、顯示模式等內(nèi)容。

(4)?設(shè)置完成后,調(diào)用Activity的finish()方法結(jié)束當前的Activity。

示例7.5

創(chuàng)建實時文件夾,顯示電話本中的聯(lián)系人的信息。

Activity類的代碼如下:

public?class?AddLiveFolder extends?Activity {

@Override

public?void?onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if?(LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(getIntent().getAction())) {

Intent intent = new?Intent();

intent.setData(Uri.parse("content://contacts/live_folders/people"));

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_BASE_INTENT, new?Intent(Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_URI));

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME, "電話本");

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON, Intent.ShortcutIconResource.fromContext(this, android.R.drawable.sym_action_call));

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE, LiveFolders.DISPLAY_MODE_LIST);

setResult(RESULT_OK, intent);

} else?{

setResult(RESULT_CANCELED);

}

finish();

}

}

本示例中用到了大量的實時文件夾相關(guān)的屬性常量,具體含義參看下表7-1-1所示。

表7-1-1 實時文件夾常用屬性及含義

名稱

含義

EXTRA_LIVE_FOLDER_NAME

實時文件夾的名稱

EXTRA_LIVE_FOLDER_ICON

實時文件夾的圖標

EXTRA_LIVE_FOLDER_DISPLAY_MODE

實時文件夾的顯示模式,取值有:

??DISPLAY_MODE_LIST(列表)

??DISPLAY_MODE-GRID(網(wǎng)格)

EXTRA_LIVE_FOLDER_BASE_INTENT

當該項數(shù)據(jù)被單擊時,將啟動該Intent對應的程序組件,并把該數(shù)據(jù)的主鍵追加到該Intent的data數(shù)據(jù)后面。

功能清單文件中對上述配置文件進行注冊,代碼如下:

<activity

?????android:name=".AddLiveFolder"

?????android:label="電話本"?>

?????<intent-filter>

???????????<action?android:name="android.intent.action.CREATE_LIVE_FOLDER"?/>

?????</intent-filter>

</activity>

程序運行效果如下圖7.1.13所示,當我們單擊這個電話圖標時就會打開聯(lián)系人界面,如下圖7.1.14所示:

?

圖7.1.13 電話本實時文件夾

?

圖7.1.14 聯(lián)系人列表


任務實訓部分??

1:?倒計時桌面小控件

訓練技能點

自定義桌面小控件

需求說明

倒計時提醒是我們?nèi)粘I罱?jīng)常用到的一個功能,本程序要求大家做按照下圖7.2.1所示的界面設(shè)計一個具有倒計時提醒功能的桌面小控件,用戶可以自行指定提示的內(nèi)容及時間。

?

圖7.2.1 倒計時桌面控件

2:創(chuàng)建快捷方式

需求說明

為之前編寫的軟件管理器創(chuàng)建一個快捷方式。要求當用戶第一次運行軟件退出軟件時,系統(tǒng)彈出一個詢問用戶是否創(chuàng)建桌面快捷方式的對話框,當用戶確認后會在桌面上創(chuàng)建本程序的快捷方式;否則,不創(chuàng)建快捷方式。


鞏固練習

一、簡答題

1.?簡單闡述在Android中開發(fā)實時壁紙的步驟。?

2.?簡單闡述在Android中創(chuàng)建實時文件夾的步驟。?

二、上機練習

修改7.5節(jié)中的實時文件夾示例程序的代碼,要求:當我們單擊桌面的電話圖標時,顯示出來的聯(lián)系人信息以網(wǎng)格的形式進行顯示。?

總結(jié)

以上是生活随笔為你收集整理的andrioid项目开发之教程 桌面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。