SlidingPaneLayout的基本使用

其他论坛看到的,为了让更多人看到,所以选择了原创

SlidingPaneLayout是V4包中新添加的组件,可以实现两列面板的切换。说先来看看api文档的说明:

SlidingPanelLayout为在UI最上层的使用提供了一个水平的,多个面板的布局。左边的面板可以看作是一个内容列表或者是浏览,右边的面板的任务是显示详细的内容

SlidingPaneLayout类也是直接继承于ViewGroup类,所以这个类也是当作容器类使用,在使用时通常可以和Fragement组件一起使用。下面是一个xiaoDemo,左边是网站url,右边显示网站。
首先是各个布局文件
主布局文件actvity_main.xml:

<android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/slidingpanellayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" > 
  
    <fragment
        android:id="@+id/leftfragment"
        android:name="com.example.android_slidingpanellayout1.BookMarkerFragment"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_gravity="left" /> 
  
    <fragment
        android:id="@+id/rightfragment"
        android:name="com.example.android_slidingpanellayout1.ShowFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_weight="1" /> 
  
</android.support.v4.widget.SlidingPaneLayout>

标签页使用的布局文件(bookmarker.xml)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" > 
  
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/> 
  
</LinearLayout>

内容页使用的布局文件(show.xml)


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>

标签页中listview使用的布局文件(mytext.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" > 
  
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:gravity="center"
        android:textAlignment="center" /> 
  
</LinearLayout>


标签页的Fragment(BookMarkerFragement.java)


package com.example.android_slidingpanellayout1; 
 import java.util.ArrayList; import java.util.List; 
 import android.app.Activity; import android.app.Fragment; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; 
 public class BookMarkerFragment extends Fragment { 
  
    public interface BookmarkListener { 
        public void onChangeBookmark(String bookmark); 
    } 
  
    public BookmarkListener myActionObject = null; 
  
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { 
        View view = inflater.inflate(R.layout.bookmarker,container,false); 
        initListView(view); 
        return view; 
    } 
  
    @Override
    public void onAttach(Activity activity) { 
  
        if (!(activity instanceof BookmarkListener)) { 
            throw new ClassCastException(); 
        } 
        myActionObject = (BookmarkListener) activity; 
        super.onAttach(activity); 
    } 
  
    @Override
    public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) { 
        MenuItem item1 = menu.add(1,1,"分享"); 
        item1.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT 
                | MenuItem.SHOW_AS_ACTION_ALWAYS); 
        ImageView imageView = new ImageView( 
                BookMarkerFragment.this.getActivity()); 
        imageView.setBackgroundResource(R.drawable.share); 
        imageView.setLayoutParams(new LayoutParams(50,50)); 
        item1.setActionView(imageView); 
  
    } 
  
    // 初始化listview     public void initListView(View view) { 
        ListView lv = (ListView) view.findViewById(R.id.listview); 
        List<String> list = new ArrayList<String>(); 
        list.add("网易"); 
        list.add("腾讯"); 
        list.add("新浪"); 
        list.add("搜狐"); 
        ArrayAdapter adapter = new ArrayAdapter( 
                BookMarkerFragment.this.getActivity(),R.layout.mytextview,R.id.text,list); 
        lv.setAdapter(adapter); 
  
        lv.setonItemClickListener(new OnItemClickListener() { 
  
            @Override
            public void onItemClick(AdapterView<?> arg0,View arg1,int position,long arg3) { 
                switch (position) { 
                case 0: 
                    myActionObject.onChangeBookmark("http://www.163.com"); 
                    break; 
                case 1: 
                    myActionObject.onChangeBookmark("http://www.qq.com"); 
                    break; 
                case 2: 
                    myActionObject.onChangeBookmark("http://www.sina.com"); 
                    break; 
                case 3: 
                    myActionObject.onChangeBookmark("http://www.sohu.com"); 
                    break; 
  
                } 
            } 
  
        }); 
  
    } 
}

内容页面(ShowFragment.java)

package com.example.android_slidingpanellayout1;
import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView;
public class ShowFragment extends Fragment {

WebView webview=null;
@Override
public View onCreateView(LayoutInflater inflater,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.show,false);
webview=(WebView) view.findViewById(R.id.webview);
return view;
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}

public WebView getWebView()
{
return webview;
}
}

主界面(MainActivity.java)


package com.example.android_slidingpanellayout1; /* * * 实现一个书签的小例子 * * */ import com.example.android_slidingpanellayout1.BookMarkerFragment.BookmarkListener; import android.os.Bundle; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.support.v4.widget.SlidingPaneLayout; import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener; import android.view.Menu; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; public class MainActivity extends Activity implements BookmarkListener { Fragment bookmarkerFragment; Fragment showFragment; SlidingPaneLayout spl = null; ActionBar actionBar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); actionBar = this.getActionBar(); actionBar.setdisplayShowTitleEnabled(false); actionBar.setdisplayHomeAsUpEnabled(true); spl = (SlidingPaneLayout) this.findViewById(R.id.slidingpanellayout); spl.setPanelSlideListener(new PanelSlideListener() { @Override public void onPanelClosed(View view) { MainActivity.this.getFragmentManager() .findFragmentById(R.id.leftfragment) .setHasOptionsMenu(false); } @Override public void onPanelOpened(View viw) { MainActivity.this.getFragmentManager() .findFragmentById(R.id.leftfragment) .setHasOptionsMenu(true); } @Override public void onPanelSlide(View arg0,float arg1) { } }); } @Override public void onChangeBookmark(String bookmark) { ShowFragment sf = (ShowFragment) MainActivity.this.getFragmentManager() .findFragmentById(R.id.rightfragment); WebView webView = sf.getWebView(); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); WebViewClient client = new WebViewClient(); webView.setWebViewClient(client); webView.loadUrl(bookmark); } }

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念