Android Market改版內容

23 December 2010

今天又收到android market的更新來信,

內容大致如下:


* The purchase refund period is now 15 minutes, and the maximum size for .apk files is now 50MB.
以後charge back的時間從一天縮短為15分鐘,且上傳的.apk最大容量提升到50MB

* The details page for every app now displays the app’s “Promotional Graphic” assets at the top.
然後如果您的APP有宣傳影片,則會在detail page上播放

* Market is now capable of filtering based on screen sizes and densities. NOTE: Filtering based on GL texture compression formats is not active at this time, but will be available in early January 2011.
然後將來market會根據螢幕尺寸解析度來過濾內容。最快會在2011年一月實現。

* Applications are now automatically added to new Live Wallpapers and Widgets categories, as appropriate.
然後以後App有牽涉到桌布或者widget的,會自動歸類到那兩個類別。


* The maximum size of the description field for an application is raised to 4000 characters.
以後app的描述可以達到四千字!!!

* A minimum of two screen shots is now required for all applications. You can supply up to eight screenshots for each application.
每個app至少需要兩個screen shot,最高可以到八個!!













read more »


Android menu & onCreateOptionsMenu和onPrepareOptionsMenu的差別

20 December 2010

其實要實作android menu很簡單,

這裡會快速的帶過,

主要會講一下onCreateOptionsMenuonPrepareOptionsMenu的差別

首先先在/res/資料夾底下,開立一個資料夾/menu

然後再/res/menu/資料夾底下,建立一個menu_option.xml的檔案

檔案內容如下

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menuOption1" android:title="option1"></item>
<item android:id="@+id/menuOption2" android:title="option2"></item>
</menu>





建立完成以後,

就在activity中加入menu的code如下:

public class main extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}


//當menu option被點選以後的反應
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
return super.onMenuItemSelected(featureId, item);
}


//建立option menu,等等會講解和onPrepareOptionsMenu的差別
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_option, menu);
return super.onCreateOptionsMenu(menu);
}


//一樣是建立option menu,等等會講解和onCreateOptionsMenu的差別
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_option, menu);
return super.onPrepareOptionsMenu(menu);
}

}







這樣MENU就會建立完成,

但是onCreateOptionsMenuonPrepareOptionsMenu的差別在哪呢?

onCreateOptionsMenu
  只會呼叫一次,他只會在MENU顯示之前,去做一次!!!之後就不會再去呼叫!


onPrepareOptionsMenu
  onPrepareOptionsMenu是每次在display menu之前,都會去呼叫,
  只要按一次menu按鍵,就會呼叫一次。
  所以你會發現每次只要按一次menu按鍵,
  menu選單就會多兩個(因為我們預設是兩個)
  你可以利用onPrepareOptionsMenu來做update menu狀態的動作








如果你要把menu現有的option清空,

就是下面那行CODE


menu.clear();



read more »


Android SharedPreferences

18 December 2010

如果想要做到儲存資訊,

且又是少量的,

如果用到sqllite又會太過於麻煩(且也會較慢)

這裡就可以用到SharedPreferences,

假設我們要做個登入介面

有個Email的欄位,

且使用者可以勾選是否要記憶住帳號及密碼,

我們就可以用SharedPreferences來做

首先我們先來做儲存資訊的function

如下:

/*
* 用來把mail存在preference裡面
*/
private final void fnStorePrefs(){
//先取得preference,且名稱為STR_PREF 的prefernce,STR_PREF 請自行宣告
final SharedPreferences settings = getSharedPreferences(STR_PREF , 0);

//然後再取得editor,為了儲存資訊
final Editor editor = settings.edit();

//把資料存進去
editor.putString(STR_PREF_EMAIL , edEmail.getText().toString());

//然後一定要commit,才會存進去
editor.commit();
}




然後再做取得資訊的function


/*
* 用來把mail從preference抓回來
*/
private final void fnRestorePrefs(){
//先取得preference,且名稱為STR_PREF 的prefernce,STR_PREF 請自行宣告
final SharedPreferences settings = getSharedPreferences(STR_PREF , 0);

//然後直接取得資料
final String strEmail = settings.getString(STR_PREF_EMAIL ,"");

//然後再放進去EditText裡面去
edEmail.setText(strEmail);
}





基本上就這二種基本的運用,一個儲存的function、一個取得的function

就看什麼時候要,什麼時候要


















read more »