Android-管理Android手机桌面
Android-管理Android手机桌面
没有接触手机编程之前,我就很好奇,那些主题背景和动态壁纸是如何做出来的,如何把图标放到手机桌面上,学习了关于管理Android手机桌面之后,我大致了解了这些内容,算是扫了一下盲了。
我相信只要用过一段Android系统手机的用户,对于手机桌面的操作是非常明了的。比如删除桌面组件,添加相应的组件到桌面这些简单的操作。
关于手机桌面的这部分内容,我自己学习了如何开发实时壁纸(Live Wallpapers),如何在桌面上创建快捷方式,管理桌面小控件,如何开发实时文件夹(LiveFolder)等。
下面是一个显示生词本的实时文件夹的实例
这个实时文件夹显示ContentProvider的数据,这要把之前开发DictProvider部署到模拟器中,才可以用实时文件显示ContentProvider返回的数据
创建项目:WordsLiveFolder
运行项目效果:
package org.wwj.desktop;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.provider.LiveFolders;public class WordsLiveFolder extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//如果该Intent的Action是创建实时文件夹的Actionif(getIntent().getAction().equals(LiveFolders.ACTION_CREATE_LIVE_FOLDER)){Intent intent = new Intent();//设置实时文件夹所显示ContentProvider提供的数据的uriintent.setData(Uri.parse("content://org.crazyit.providers.dictprovider/words"));//设置实时文件夹的base intent属性intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_BASE_INTENT, new Intent(Intent.ACTION_VIEW, Uri.parse("content://org.crazyit.providers.dictprovider/word/")));//设置实时文件夹的名称intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME, "生词本");//设置实时文件夹的图标intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON, Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher));//设置实时文件夹的显示模式intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE, LiveFolders.DISPLAY_MODE_GRID);setResult(RESULT_OK, intent);}else{setResult(RESULT_CANCELED);}//结束该Activityfinish();}}
<activity android:name=".WordsLiveFolder" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.CREATE_LIVE_FOLDER"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
package org.wwj.desktop;import android.app.Activity;import android.content.ContentUris;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.widget.EditText;public class ShowWordActivity extends Activity{EditText etWord , etDescription;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.show);// 获取界面组件etWord = (EditText) findViewById(R.id.word);etDescription = (EditText) findViewById(R.id.description);Uri uri = getIntent().getData();// 获取单词IDlong id = ContentUris.parseId(uri);// 从ContentProvider查询指定单词Cursor cursor = getContentResolver().query(Uri.parse("content://org.crazyit.providers.dictprovider/words"), null , "_id=?" , new String[]{id + ""} , null );if(cursor.moveToNext()){// 使用界面组件显示查询得到的结果etWord.setText(cursor.getString(1));etDescription.setText(cursor.getString(2));}}}
<activity android:name=".ShowWordActivity" android:label="@string/title_activity_show_word" > <intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:mimeType="vnd.android.cursor.item/org.crazyit.dict"/> </intent-filter> </activity>
<?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"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/word"/><EditTextandroid:id="@+id/word"android:layout_width="fill_parent"android:layout_height="wrap_content"android:cursorVisible="false"android:editable="false"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/description"/><EditTextandroid:id="@+id/description"android:layout_width="fill_parent"android:layout_height="wrap_content"android:lines="3"android:cursorVisible="false"android:editable="false"/></LinearLayout>