標籤:des android http io os 使用 ar for 檔案
開發一個特別簡單的小安卓應用,主要做了這些事情:
1、配置activity_main.xml檔案
放置一個TextView和一個ListView,TextView用於顯示文本,ListView設定id問listview0用於放置多個Item;
Item的position(位置)和Id(第幾行)都是從0開始(onItemClick(AdapterView<?> arg0, View view,int position, long id) )
2、建立listview0.xml檔案
放置一個ImageView,用於顯示圖片。此檔案布局即為上面ListView中一個Item的布局。
3、為ListView配置資料來源
由於listview0.xml裡面只有一個ImageView,所以資料設定為以下方法:
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
int imgs[] = new int[] { R.drawable.buyno, R.drawable.quno };
for (int i = 0; i < imgs.length; i++) {
map = new HashMap<String, Object>();
map.put("imageview", imgs[i]);
list.add(map);
}
return list;
}
適配器將資料配置到ListView中
SimpleAdapter adapter = new SimpleAdapter(this, getData(),
R.layout.listview01, new String[] { "imageview" },
new int[] { R.id.imageview });
listView.setAdapter(adapter);
4. ListView中Item點擊事件:
傳遞Item的Id給下一個Avtivity用啟動,以確保點擊不同Item響應不同事件。
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View imageView,
int position, long id) {
Intent intent = new Intent();
intent.putExtra("position", position + "");
intent.setClass(MainActivity.this, ChoiceActivity.class);
startActivity(intent);
}
});
5、配置菜單:(菜單開發1)
在menu檔案夾下配置main.xml中的item並設定Id,用於點擊Item時的區分。
6、菜單點擊事件:
根據Item的ID響應不同事件。
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.exit0) {
//退出
MainActivity.this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
7、配置另一個Activity的布局檔案choice.xml
放置一個ImageView和兩個按鈕並置中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageview2"
android:src="@drawable/think"
android:layout_width="fill_parent"
android:layout_height="300dp"
android:contentDescription="@string/think"
android:layout_gravity="center"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/choiceButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chose"
android:layout_gravity="center_horizontal" />
<Button
android:id="@+id/exitbutton"
android:text="@string/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
8、啟動另一個Activity時擷取資料
Intent intent = this.getIntent();
position = intent.getStringExtra("position");
9、根據不同的Item點擊事件來設定不同的圖片(根據posotion來判斷)
//填充圖片
private int[] getImgs() {
int imgs[] = new int[2];
if("0".equals(position)){
imgs[0] = R.drawable.buy;
imgs[1] = R.drawable.nobuy;
}else if("1".endsWith(position)){
imgs[0] = R.drawable.go;
imgs[1] = R.drawable.nogo;
}
return imgs;
}
10、ImageVIew和Buttond的點擊事件
點擊一次隨機擷取圖片
//轉換圖片
private Drawable changeImg(int[] imgs) {
Drawable drawable;
int num = (int)(Math.random()*3);
if(num>=0&&num<1){
drawable = getResources().getDrawable(imgs[0]);
}else if(num>=1&&num<2){
drawable = getResources().getDrawable(R.drawable.think);
}else{
drawable = getResources().getDrawable(imgs[1]);
}
return drawable;
}
主幹:
Drawable drawable = null ;
int[] imgs = getImgs();
drawable = changeImg(imgs);
imageView.setImageDrawable(drawable);
10、添加菜單並設定點擊事件(菜單開發2)
copy別人高品質代碼如下
//建立菜單
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/*
*
* add()方法的四個參數,依次是:
*
* 1、組別,如果不分組的話就寫Menu.NONE,
*
* 2、Id,這個很重要,Android根據這個Id來確定不同的菜單
*
* 3、順序,那個菜單現在在前面由這個參數的大小決定
*
* 4、文本,菜單的顯示文本
*/
menu.add(Menu.NONE, Menu.FIRST + 1, 5, "有待開發").setIcon(
android.R.drawable.ic_menu_delete);
// setIcon()方法為菜單設定表徵圖,這裡使用的是系統內建的表徵圖,同學們留意一下,以
// android.R開頭的資源是系統提供的,我們自己提供的資源是以R開頭的
menu.add(Menu.NONE, Menu.FIRST + 2, 2, "有待開發").setIcon(
android.R.drawable.ic_menu_edit);
menu.add(Menu.NONE, Menu.FIRST + 3, 6, "退出").setIcon(
android.R.drawable.ic_menu_help);
menu.add(Menu.NONE, Menu.FIRST + 4, 1, "有待開發").setIcon(
android.R.drawable.ic_menu_add);
menu.add(Menu.NONE, Menu.FIRST + 5, 4, "有待開發").setIcon(
android.R.drawable.ic_menu_info_details);
menu.add(Menu.NONE, Menu.FIRST + 6, 3, "有待開發").setIcon(
android.R.drawable.ic_menu_send);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Menu.FIRST + 1:
Toast.makeText(this, "有待開發", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 2:
Toast.makeText(this, "有待開發", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 3:
ChoiceActivity.this.finish();
break;
case Menu.FIRST + 4:
Toast.makeText(this, "有待開發", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 5:
Toast.makeText(this, "有待開發", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 6:
Toast.makeText(this, "有待開發", Toast.LENGTH_LONG).show();
break;
}
return true;
}
番外:添加搖一搖換圖片功能:
首先需實現介面SensorEventListener
1、聲明感應器管理和震動器
//感應器管理類
private SensorManager sensorManager;
//震動器
private Vibrator vibrator;
2、擷取系統服務
在OnCreate函數中
//感應器
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
//震動
vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);
3、註冊監聽
重載OnResume函數
//註冊監聽
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
4、解除監聽
重載OnPause函數
sensorManager.unregisterListener(this);
5、搖一搖響應事件
粘貼別人高品質代碼
@Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
//values[0]:X軸,values[1]:Y軸,values[2]:Z軸
float[] values = event.values;
if (sensorType == Sensor.TYPE_ACCELEROMETER)
{
if ((Math.abs(values[0]) > 17 || Math.abs(values[1]) > 17 || Math
.abs(values[2]) > 17))
{
/*主要響應事件*/
Drawable drawable = null ;
int[] imgs = getImgs();
drawable = changeImg(imgs);
imageView.setImageDrawable(drawable);
/*響應事件結束*/
//搖動手機後,再伴隨震動提示~~
vibrator.vibrate(500);
}
}
}
一個安卓小應用的開發