一個安卓小應用的開發

來源:互聯網
上載者:User

標籤: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);
}

}
}

 

一個安卓小應用的開發

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.