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{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); //如果该Intent的Action是创建实时文件夹的Action if(getIntent().getAction().equals(LiveFolders.ACTION_CREATE_LIVE_FOLDER)){ Intent intent = new Intent(); //设置实时文件夹所显示ContentProvider提供的数据的uri intent.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); } //结束该Activity finish(); } }
<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; @Override public 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(); // 获取单词ID long 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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/word" /> <EditText android:id="@+id/word" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/description" /> <EditText android:id="@+id/description" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lines="3" android:cursorVisible="false" android:editable="false" /> </LinearLayout>