2010年2月25日 星期四

Android學習筆記 - 長按選單(ContextMenu)

1. 在螢幕按下2至3秒之後出現選單,這是使用ContextMenu物件來達到此效果

2. 需覆寫onCreateContextMenu及onContextItemSelected這二個方法

3. MainActivity.java
import android.app.Activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        LinearLayout windowLayout = (LinearLayout) findViewById(R.id.windowLayout);
        //註冊長按選單
        this.registerForContextMenu(windowLayout);
    }


    @Override
    public boolean onContextItemSelected(MenuItem item) {
        //當使用者點選項目時,所需的動作
        Toast.makeText(this, "您選擇的是"+item.getTitle(), Toast.LENGTH_SHORT).show();
        return super.onContextItemSelected(item);
    }


    @Override
    public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenuInfo menuInfo) {
        //設定選單內容
        super.onCreateContextMenu(contextMenu, view, menuInfo);
        contextMenu.add(0, 0, 0, "紅茶");
        contextMenu.add(0, 1, 0, "奶茶");
        contextMenu.add(0, 2, 0, "綠茶");
        contextMenu.add(0, 3, 0, "青茶");
    }
}


3. main.xml(Layout)
<?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"
    android:id="@+id/windowLayout">
</LinearLayout>


4. 執行之後的畫面。



2010年2月24日 星期三

Android學習筆記 - 網格視圖(GridView)

1. 利用網格視圖(GridView)物件來呈現項目列表

2. MainActivity.java
package org.me.android_gridview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private GridView gridView;
    
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        gridView = (GridView) findViewById(R.id.gridView);
        final String[] list = new String[]{"王建民","郭泓志","倪福德","胡金龍"};
        //設定列表內容
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
        //設定列數
        gridView.setNumColumns(2);
        gridView.setAdapter(adapter);
        //項目被點選時,回應的動作
        gridView.setOnItemClickListener(new GridView.OnItemClickListener(){
           @Override
           public void onItemClick(AdapterView adapterView,View view,int position,long id) {
               Toast.makeText(MainActivity.this, "您選擇的是"+list[position], Toast.LENGTH_SHORT).show();
           }
        });
    }
}


3. main.xml(Layout)
<?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">" 
    <GridView
        android:id="@+id/gridView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </GridView>
</LinearLayout>


4. 執行之後的畫面。


2010年2月23日 星期二

Android學習筆記 - 自動填入文字(AutoCompleteTextView)

1. 利用(AutoCompleteTextView)物件來達到自動填入文字

2. MainActivity.java
package org.me.android_autocompletetextview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
    private AutoCompleteTextView autoComplete;
    
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete);
        String[] phone = new String[]{"0986254878","0985225787","098525879","0985012486","0985658745"};
        //設定自動填入的文字內容
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,phone);
        autoComplete.setAdapter(adapter);
    }
}


3. main.xml(Layout)
<?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">" 
    <AutoCompleteTextView
        android:id="@+id/autoComplete"
        android:layout_width="fill_parent"
        android:layout_height="50px">
    </AutoCompleteTextView>
</LinearLayout>


4. 在「自動填入文字框」輸入文字之後出現的畫面。


Android學習筆記 - 下拉式選單(Spinner)

1. 透過Spinner物件建立下拉式選單

2. MainActivity.java
package org.me.android_spinner;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        Spinner spinner = (Spinner) findViewById(R.id.spinnner);
        //建立一個ArrayAdapter物件,並放置下拉選單的內容
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,new String[]{"紅茶","奶茶","綠茶"});
        //設定下拉選單的樣式
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        //設定項目被選取之後的動作
        spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
            public void onItemSelected(AdapterView adapterView, View view, int position, long id){
                Toast.makeText(MainActivity.this, "您選擇"+adapterView.getSelectedItem().toString(), Toast.LENGTH_LONG).show();
            }
            public void onNothingSelected(AdapterView arg0) {
                Toast.makeText(MainActivity.this, "您沒有選擇任何項目", Toast.LENGTH_LONG).show();
            }
        });
    }
}


3. main.xml(Layout)
<?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:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </TextView>
    <Spinner
        android:id="@+id/spinnner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </Spinner>
</LinearLayout>


4. 下拉式選單畫面


2010年2月22日 星期一

HTC Hero 將升級為Android 2.1版

HTC於Plurk公告將於2010年4月底前透過無線更新的方式,

將HTC Hero 升級為Android 2.1版本,並同時升級

新版HTC SENSE Experience之支援服務。

有使用的人可以先備份手機準備更新囉… 

From HTC Hero Plurk


2010年2月21日 星期日

Present Perfect Continuous(現在完成進行式)

Present Perfect Continuous簡單來說就是發生在過去到現在持續的事件

以下是Present Perfect Continuous發生的時機
1. 從過去開始並持續到現在
   e.g. I have been watching TV for two hours.

2. 最近
   e.g. I have been watching TV lately.


2010年2月9日 星期二

Past Continuous(過去進行式)

Past Continuous簡單來說就是發生在過去的Long Action,而Simple Past就是發生在過去的Short Action

以下是Past Continuous發生的時機:
1. 在過去被中斷的動作
   e.g. While I was reading , he called.
        I was reading when he called.

2. 特定一個時間點發生
   e.g. I was reading last night at 7.
        At midnight, I was reading.

3. 過去並行的動作
   e.g. I was reading while he was watching TV.

4. 過去常常重覆的動作
   e.g. I was always working late.


2010年2月7日 星期日

Android學習筆記 - 傳遞參數到下一個Activity

1. 透過Bundle物件傳遞參數到下一個Activity

2. 第一個Activity(MainActivity.java)
package org.me.android_transferparam;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
    private Button nextButton;
    private EditText nameEdit;
    private EditText phoneEdit;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        //載入所有的Widget
        loadWidget();
        
        nextButton.setOnClickListener(new Button.OnClickListener(){
           @Override
           public void onClick(View view){
               //傳送參數到下一個Actitity
               deliverToNextActitity();
           }
        });
    }

    public void deliverToNextActitity(){
        //建立一個bundle物件,並將要傳遞的參數放到bundle裡
        Bundle bundle = new Bundle();
        bundle.putString("name", nameEdit.getText().toString());
        bundle.putString("phone", phoneEdit.getText().toString());
        Intent intent = new Intent();
        //設定下一個Actitity
        intent.setClass(this, SecondActivity.class);
        intent.putExtras(bundle);
        //開啟Activity
        startActivity(intent);
    }

    private void loadWidget(){
        nextButton = (Button) findViewById(R.id.nextButton);
        nameEdit = (EditText) findViewById(R.id.nameEdit);
        phoneEdit = (EditText) findViewById(R.id.phoneEdit);
    }
}

3. 第二個Activity(SecondActivity.java)
package org.me.android_transferparam;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class SecondActivity extends Activity {

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.second);
        TextView content = (TextView) findViewById(R.id.content);
        Button backButton = (Button) findViewById(R.id.backButton);
        //取得前一個Activity傳過來的Bundle物件
        Bundle bundle = getIntent().getExtras();
        content.setText("姓名:"+bundle.getString("name")+"   電話:"+bundle.getString("phone"));

        backButton.setOnClickListener(new Button.OnClickListener(){
           @Override
           public void onClick(View view){
               //結束此Activity
               finish();
           }
        });
    }
}

4. main.xml(Layout)
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:id="@+id/widget149"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <EditText
        android:id="@+id/nameEdit"
        android:layout_width="100px"
        android:layout_height="36px"
        android:layout_x="58px"
        android:layout_y="12px"
        >
    </EditText>
    <TextView
        android:id="@+id/nameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名:"
        android:layout_x="0px"
        android:layout_y="18px"
        >
    </TextView>
    <TextView
        android:id="@+id/phoneText"
        android:layout_width="wrap_content"
        android:layout_height="-12px"
        android:text="電話:"
        android:layout_x="-1px"
        android:layout_y="62px"
        >
    </TextView>
    <EditText
        android:id="@+id/phoneEdit"
        android:layout_width="100px"
        android:layout_height="36px"
        android:layout_x="58px"
        android:layout_y="57px"
        >
    </EditText>
    <Button
        android:id="@+id/nextButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="傳送到下一個Activity"
        android:layout_x="4px"
        android:layout_y="103px"
        >
    </Button>
</AbsoluteLayout>

5. second.xml(Layout)
<?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:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </TextView>
    <Button
        android:id="@+id/backButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="回前一個Activity">
    </Button>
</LinearLayout>

6. 程式啟動及輸入參數之後的畫面


2010年2月6日 星期六

Gogobox搜尋引擎 - 100 Box

關大家自從fXXd box及2x XD關站之後,都不知道要到哪裡搜尋Box了…

介紹一個利用Google自訂搜尋所做的Gogobox搜尋引擎 100 Box

 





 


2010年2月4日 星期四

Android學習筆記 - 多選項對話框(Dialog)

1. 利用AlertDialog物件來顯示對話框,並利用字串陣列來標示選項的標題。

2. MainActivity.java
package org.me.android_multiitemdialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    private Button showDialogButton;
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        showDialogButton = (Button) findViewById(R.id.showDialogButton);
        final AlertDialog mutiItemDialog = getMutiItemDialog(new String[]{"牛排","雞排","豬排"});

        showDialogButton.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View view){
                //顯示對話框
                mutiItemDialog.show();
            }
        });
    }

    public AlertDialog getMutiItemDialog(final String[] items) {
        Builder builder = new Builder(this);
        //設定對話框內的項目
        builder.setItems(items, new DialogInterface.OnClickListener(){
           @Override
           public void onClick(DialogInterface dialog,int which){
               //當使用者點選對話框時,顯示使用者所點選的項目
               Toast.makeText(MainActivity.this, "您選擇的是"+items[which], Toast.LENGTH_SHORT).show();
           }
        });
        return builder.create();
    }
}

3. main.xml(Layout)
<?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">" 
    <Button
        android:id="@+id/showDialogButton"
        android:layout_width="150px"
        android:layout_height="50px"
        android:text="多個選項的對話框">
    </Button>
</LinearLayout>
4. 按下「多個選項的對話框」按鈕之後出現的畫面。


2010年2月3日 星期三

Android學習筆記 - 對話框(Dialog)

1. 利用AlertDialog物件來顯示對話框。

2. MainActivity.java
package org.me.android_dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button dialogButton;
    
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        dialogButton = (Button) findViewById(R.id.dialogButton);
        final AlertDialog alertDialog = getAlertDialog("這是一個對話框","請選擇......");
        dialogButton.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(final View view) {
                //顯示對話框
                alertDialog.show();
            }
        });
    }

    private AlertDialog getAlertDialog(String title,String message){
        //產生一個Builder物件
        Builder builder = new AlertDialog.Builder(MainActivity.this);
        //設定Dialog的標題
        builder.setTitle(title);
        //設定Dialog的內容
        builder.setMessage(message);
        //設定Positive按鈕資料
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //按下按鈕時顯示快顯
                Toast.makeText(MainActivity.this, "您按下OK按鈕", Toast.LENGTH_SHORT).show();
            }
        });
        //設定Negative按鈕資料
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //按下按鈕時顯示快顯
                Toast.makeText(MainActivity.this, "您按下Cancel按鈕", Toast.LENGTH_SHORT).show();
            }
        });
        //利用Builder物件建立AlertDialog
        return builder.create();
    }
}

3. main.xml(Layout)
<?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">" 
    <Button
        android:id="@+id/dialogButton"
        android:layout_width="95px"
        android:layout_height="40px"
        android:text="ShowDialog"
        >
    </Button>
</LinearLayout>

4. 按下ShowDialog按鈕之後出現的畫面


2010年2月2日 星期二

Android學習筆記 - 顯示快顯(Toast)

1. 利用Toast物件來顯示快顯。

2. MainActivity.java
package org.me.android_toast;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button toastButton;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        toastButton = (Button) findViewById(R.id.toastButton);

        //設定按鈕的ClickListener
        toastButton.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View view) {
                //當使用者按下按鈕時顯示Toast
                //Toast.LENGTH_LONG表示顯示時間較長,Toast.LENGTH_SHORT則表示顯示時間較短
                Toast.makeText(view.getContext(), "這是一個Toast......", Toast.LENGTH_LONG).show();
            }
        });
    }
}

3. main.xml(Layout)
<?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">
    <Button
        android:id="@+id/toastButton"
        android:layout_width="90px"
        android:layout_height="37px"
        android:text="ShowToast">
    </Button>
</LinearLayout>


4. 按下ShowToast按鈕之後出現的畫面


2010年2月1日 星期一

Android學習筆記 - 建立選單(Menu)

1. 利用覆寫onCreateOptionsMenu, onOptionsItemSelected這二個方法來建立選單。

2. MainActivity.java
package org.me.android_menu;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView describe;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        describe = (TextView) findViewById(R.id.describe);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //參數1:群組id, 參數2:itemId, 參數3:item順序, 參數4:item名稱
        menu.add(0, 0, 0, "說明");
        menu.add(0, 1, 1, "離開");
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //依據itemId來判斷使用者點選哪一個item
        switch(item.getItemId()) {
            case 0:
                //在TextView上顯示說明
                describe.setText("這是說明............");
                break;
            case 1:
                //結束此程式
                finish();
                break;
            default:
        }
        return super.onOptionsItemSelected(item);
    }
}
3. main.xml(Layout)
<?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:id="@+id/describe"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""/>
</LinearLayout>
4. 按下MENU鍵之後出現及點選「說明」之後出現的畫面