Android-管理Android手機桌面

Android-管理Android手機桌面

沒有接觸手機編程之前,我就很好奇,那些主題背景和動態壁紙是如何做出來的,如何把圖標放到手機桌面上,學習瞭關於管理Android手機桌面之後,我大致瞭解瞭這些內容,算是掃瞭一下盲瞭。

我相信隻要用過一段Android系統手機的用戶,對於手機桌面的操作是非常明瞭的。比如刪除桌面組件,添加相應的組件到桌面這些簡單的操作。

關於手機桌面的這部分內容,我自己學習瞭如何開發實時壁紙(Live Wallpapers),如何在桌面上創建快捷方式,管理桌面小控件,如何開發實時文件夾(LiveFolder)等。

 

下面是一個顯示生詞本的實時文件夾的實例

這個實時文件夾顯示ContentProvider的數據,這要把之前開發DictProvider部署到模擬器中,才可以用實時文件顯示ContentProvider返回的數據

 

創建項目:WordsLiveFolder

運行項目效果:

    

 

       
 

       

 

     

 

     

 

[java]
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(); 
    } 

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

[html] 
   
<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> 

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

 

[java]
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)); 
        } 
    } 

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

[html] 
<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> 

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

[html] 
<?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> 

<?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>
 

 作者:wwj_748
 

發佈留言