今天学习SlidingDrawer控件,完成了一个简单的Demo,跟大家分享一下:
1 首先在layout下面新建两个布局文件,当前Activity中用到的主布局文件main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SlidingDrawer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/slidingDrawer"
android:handle="@+id/layout1"
android:content="@+id/gridView"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="30px"
android:layout_height="wrap_content"
android:background="@drawable/main"
android:gravity="center">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/save">
</ImageView>
</LinearLayout>
<GridView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/gridView"
android:numColumns="3"
android:background="@drawable/main"
android:gravity="center"/>
</SlidingDrawer>
</RelativeLayout>
适配器中用到的布局文件grid.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="20sp"
android:gravity="center"
android:textColor="#FFFFFF"/>
</LinearLayout>
2 当前的Activity的SlidingDrawerTestActivity.java代码如下public class SlidingDrawerTestActivity extends Activity
{
private GridView gridView;
private SlidingDrawer slidingDrawer;
private ImageView imageView;
private int[] icons={R.drawable.alarm,R.drawable.calendar,R.drawable.clock,R.drawable.music,R.drawable.tv};
private String[] items={"alarm","calendar","clock","music","tv"};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView=(GridView)findViewById(R.id.gridView);
slidingDrawer=(SlidingDrawer)findViewById(R.id.slidingDrawer);
imageView=(ImageView)findViewById(R.id.imageView);
GridViewAdapter gridViewAdapter=new GridViewAdapter(this,items,icons);
gridView.setAdapter(gridViewAdapter);
slidingDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() {
@Override
public void onDrawerOpened()
{
imageView.setImageResource(R.drawable.open);
}
});
slidingDrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {
@Override
public void onDrawerClosed()
{
imageView.setImageResource(R.drawable.close);
}
});
slidingDrawer.setOnDrawerScrollListener(new SlidingDrawer.OnDrawerScrollListener() {
@Override
public void onScrollStarted()
{
Log.d("打印测试","onScrollStarted()方法执行");
}
@Override
public void onScrollEnded()
{
Log.d("打印测试","onScrollEnded()方法执行");
}
});
gridView.setOnItemClickListener(new GridView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
{
switch (icons[arg2]) //只能用icons[arg2],不能用items[args](在java7中才能用)
{
case R.drawable.alarm:
Toast.makeText(getApplicationContext(),"你点击的是"+items[arg2],Toast.LENGTH_SHORT).show();
break;
case R.drawable.calendar:
Toast.makeText(getApplicationContext(),"你点击的是"+items[arg2],Toast.LENGTH_SHORT).show();
break;
case R.drawable.clock:
Toast.makeText(getApplicationContext(),"你点击的是"+items[arg2],Toast.LENGTH_SHORT).show();
break;
case R.drawable.music:
Toast.makeText(getApplicationContext(),"你点击的是"+items[arg2],Toast.LENGTH_SHORT).show();
break;
case R.drawable.tv:
Toast.makeText(getApplicationContext(),"你点击的是"+items[arg2],Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
});
}
}
适配器文件GridViewAdapter.java代码如下public class GridViewAdapter extends BaseAdapter
{
private Context context;
private String []items;
private int[] icons;
public GridViewAdapter(Context context,String[] items, int[] icons)
{
this.context=context;
this.items=items;
this.icons=icons;
}
@Override
public int getCount() {
return items.length;
}
@Override
public Object getItem(int position) {
return items[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater factory=LayoutInflater.from(context);
View view=(View)factory.inflate(R.layout.grid,null);
ImageView imageView=(ImageView)view.findViewById(R.id.icon);
TextView textView=(TextView)view.findViewById(R.id.text);
imageView.setImageResource(icons[position]);
textView.setText(items[position]);
return view;
}
}
滑动式抽屉运行后截图如下