今天学习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中才能用)
适配器文件GridViewAdapter.java代码如下{ 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; } } }); } }
滑动式抽屉运行后截图如下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; } }