Android之SlidingPanelLayout

来源:互联网 发布:阿里云邮箱个性签名 编辑:程序博客网 时间:2024/06/15 23:42

SlidingPaneLayout提供一种用于用户接口的顶层的水平,多窗格布局。左边(或第一)窗格被视为一个内容列表或浏览器中,从属的其次的那个窗格用于显示内容的主详图。

如果他们的总宽度超过了SlidingPaneLayout可用宽度,可能会造成视图重叠。发生这种情况时,用户可以拖动以改变视图,或者使用键盘导航。

SlidingPaneLayout其本质是view类,我们可以把这个当成一个普通的layout,里面可以布局其他的布局,例如fragment,LinearLayout,只不过他的布局有左右之分。

一个简单的例子,左侧布局一个layout,里面加了一个listview,显示子项,右侧一个layout,显示所谓的内容。
package com.example.slidingpanelayout;import android.os.Bundle;import android.app.Activity;import android.support.v4.widget.SlidingPaneLayout;import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {ListView mMenuList;    ImageView appImage;    TextView TitleText;    SlidingPaneLayout mSlidingPanel;    String [] MenuTitles = new String[]{"First Item","Second Item","Third Item","Fourth Item"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSlidingPanel = (SlidingPaneLayout) findViewById(R.id.SlidingPanel);        mMenuList = (ListView) findViewById(R.id.MenuList);        appImage = (ImageView)findViewById(android.R.id.home);        TitleText = (TextView)findViewById(android.R.id.title);        mMenuList.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,MenuTitles));        mSlidingPanel.setPanelSlideListener(panelListener);        mSlidingPanel.setParallaxDistance(200);        getActionBar().setDisplayShowHomeEnabled(true);        getActionBar().setHomeButtonEnabled(true);}PanelSlideListener panelListener = new PanelSlideListener(){        @Override        public void onPanelClosed(View arg0) {            // TODO Auto-generated method stub                getActionBar().setTitle(getString(R.string.app_name));            appImage.animate().rotation(0);        }        @Override        public void onPanelOpened(View arg0) {            // TODO Auto-generated method stub            getActionBar().setTitle("Menu Titles");            appImage.animate().rotation(90);                }        @Override        public void onPanelSlide(View arg0, float arg1) {            // TODO Auto-generated method stub        }    };    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case android.R.id.home:if (mSlidingPanel.isOpen()) {appImage.animate().rotation(0);mSlidingPanel.closePane();getActionBar().setTitle(getString(R.string.app_name));} else {appImage.animate().rotation(90);mSlidingPanel.openPane();getActionBar().setTitle("Menu Titles");}break;default:break;}return super.onOptionsItemSelected(item);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

布局文件

<android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/SlidingPanel"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <LinearLayout        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="left">        <ListView            android:id="@+id/MenuList"            android:layout_width="match_parent"            android:layout_height="match_parent" >        </ListView>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_gravity="right"        android:background="#101010"        android:orientation="vertical" >        <ImageView            android:layout_width="match_parent"            android:layout_height="match_parent"            android:src="@drawable/pic_jigongbao" />    </LinearLayout></android.support.v4.widget.SlidingPaneLayout>

demo下载

http://download.csdn.net/detail/abc137508277/8127055

新浪微博

http://weibo.com/blulee/home?wvr=5


0 0
原创粉丝点击