SlidingPaneLayout的基本使用

来源:互联网 发布:php 图片字节流 编辑:程序博客网 时间:2024/05/18 06:23

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

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, 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, ViewGroup container, 
            Bundle savedInstanceState) { 
        View view = inflater.inflate(R.layout.show, container, 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); 
  
    } 
  
}



0 1
原创粉丝点击