Android有一系列的预设的例如layout, drawable, id等资源,以方便用户使用。但是在API文档里,往往只有这个资源的int常量,也没有详细的介绍。所以,也不知道各个常量分别对应的是什么效果,很费劲。比如:android.R.layout.activity_list_item。如果没有对应的xml,我们根本不知道这个layout是怎样的一个效果。既然是系统自带的,那么就应该有对应的xml。其实是这样的,系统自带的这些资源的存放位置为:android-sdk-windows\platforms\android-1.5\data\res\layout。
例如,写了一个简单的List Demo程序,就用到了一些android.R中的一些资源常量。
/**
*
*/
package com.cim;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
/**
* @author Administrator
*
*/
public class ListDemo extends ListActivity {
MediaPlayer player = null;
cAdapter strAdapter = null;
String[] names = { "John", "Lily", "Tom", "Neil", "Zack", "Stan", "Zoey",
"Mandy", "Rach", "Sheldon", "Leonard" };
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
if(player == null){
player = MediaPlayer.create(this, R.raw.hello);
}
List<Map> list = new ArrayList<Map>();
for(int i = 0; i < names.length; i++){
Map<String, Object> map = new HashMap<String, Object>();
map.put("icon", android.R.drawable.star_big_on);
map.put("title", names[i]);
list.add(map);
}
setListAdapter(new SimpleAdapter(this,
(List<? extends Map<String, ?>>) list,
android.R.layout.activity_list_item,
new String[]{"title", "icon"},
new int[]{android.R.id.text1, android.R.id.icon}));
getListView().setTextFilterEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add("Quit").setIcon(R.drawable.icon);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
this.finish();
return true;
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
player.start();
System.out.println("#####CLIKED: "
+ l.getItemAtPosition(position).toString());
}
}
效果如图:
//-------------------------------------------------------------------
顺便说一下,使用模拟器截图的方法:
1,首先打开模拟器运行程序;
2,运行tools/ddms.bat,在其界面中选中一个设备列表——一般如果只打开了一个模拟器的话,只会有一个设备,即该模拟器;
3,在菜单栏选择Device-->Screen capture即可截图。