想要实现的效果(抽屉上的listview上面每个项都有一个图标)
下面是我的布局文件(目前还不知道怎么加载另外的布局文件,所以左侧抽屉和中间部分的布局都在一个文件)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ImageView
android:id="@+id/bimg"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<TextView
android:id="@+id/shuosha"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>
下面是Activity文件(参照了一些网上的例子):
import android.app.Activity;
import android.app.ListActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.*;
import android.widget.*;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import android.support.v4.widget.DrawerLayout;
public class MainActivity extends ListActivity {
/*初始化菜单*/
private static final String TOULE ="偷乐";
private static final String YANFU="眼福";
private static final String SHUOSHA ="说啥";
/**/
private ListView show;//show qiubai.
private ImageView bimg;//show bing image.
private ListView vlist ;//list view
//private ActionBarDrawerToggle mDrawerToggle;
private Bitmap bingisources;//bing image sources.
private List<String> qsbkshow = new ArrayList<String>();
//private List <String> arrayToList = new ArrayList<String>(Arrays.asList(new String[]{"偷乐","眼福"}));
private DrawerLayout mDrawerLayout = null;
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x123) {
if (bimg.getVisibility() == View.VISIBLE) {
bimg.setVisibility(View.INVISIBLE);
}
show.setVisibility(View.VISIBLE);
show.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.listcustom, qsbkshow));
} else if (msg.what == 0x124) {
if (show.getVisibility() == View.VISIBLE) {
show.setVisibility(View.INVISIBLE);
}
bimg.setVisibility(View.VISIBLE);
bimg.setImageBitmap(bingisources);
}
mDrawerLayout.setVisibility(View.INVISIBLE);
}
};
/**
* 获取左侧菜单的listView.
*
*
* @return
*/
private List<Map<String, Object>> getData(){
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put(TOULE,R.drawable.toule);
map.put(YANFU,R.drawable.yanfu);
map.put(SHUOSHA,R.drawable.guanyu);
list.add(map);
return list;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.leftmenu:
if(mDrawerLayout.getVisibility()==View.VISIBLE){
//vlist.setVisibility(View.INVISIBLE);
}else{
mDrawerLayout.setVisibility(View.VISIBLE);
mDrawerLayout.openDrawer(Gravity.LEFT);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content view
boolean drawerOpen = mDrawerLayout.isDrawerOpen(vlist);
menu.findItem(R.id.leftmenu).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setContentView(R.layout.main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
show = (ListView) findViewById(R.id.show);
bimg = (ImageView) findViewById(R.id.bimg);
vlist= (ListView) findViewById(R.id.left_drawer);
setListAdapter(new SimpleAdapter(MainActivity.this, getData(), android.R.layout.simple_list_item_2, new String[]{"img_pre", "text"}, new
int[]{R.id.img_pre, R.id.text}));
vlist = getListView();
vlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if ((getData().get(0)).get(position).equals(TOULE)) {
class getNet implements Runnable {
@Override
public void run() {
getqs();
}
}
new Thread(new getNet()).start();
}else if ((getData().get(0)).get(position).equals(YANFU)) {
class getBingimages implements Runnable {
@Override
public void run() {
try {
getbimsa();
} catch (IOException e) {
e.printStackTrace();
}
}
}
new Thread(new getBingimages()).start();
}else if ((getData().get(0)).get(position).equals(SHUOSHA)) {
TextView tv = (TextView) findViewById(R.id.shuosha);
Toast.makeText(MainActivity.this,"说啥,现在看到了把??哈哈",Toast.LENGTH_LONG);
tv.setText("暂时不说.");
}
}
});
}
}
在线等大神......
------解决思路----------------------
推荐使用github上的抽屉框架
https://github.com/ikimuhendis/LDrawer