您的位置:首页 > 其它

滑动式抽屉布局界面SlidingDrawer的简单使用

2011-12-09 15:33 393 查看
今天学习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;
	}
}
滑动式抽屉运行后截图如下



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐