SlidingPaneLayout实现QQ5.0侧滑菜单(perfect)

来源:互联网 发布:js检测是否存在指定值 编辑:程序博客网 时间:2024/05/13 21:36

SlidingPaneLayout实现QQ5.0侧滑菜单,我还是废话少说。代码如下:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/sp_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/universe_background_1" >    <LinearLayout        android:id="@+id/menu_main"        android:layout_width="192dp"        android:layout_height="match_parent"        android:orientation="vertical" >        <Button            android:id="@+id/button1"            android:layout_width="match_parent"            android:layout_height="48dp"            android:background="#00000000"            android:text="Button"            android:textColor="#00000000" />        <Button            android:id="@+id/button2"            android:layout_width="match_parent"            android:layout_height="48dp"            android:background="#00000000"            android:text="Button"            android:textColor="#ffffff" />        <Button            android:id="@+id/button3"            android:layout_width="match_parent"            android:layout_height="48dp"            android:background="#00000000"            android:text="Button"            android:textColor="#ffffff" />        <Button            android:id="@+id/button4"            android:layout_width="match_parent"            android:layout_height="48dp"            android:background="#00000000"            android:text="Button"            android:textColor="#ffffff" />        <Button            android:id="@+id/button5"            android:layout_width="match_parent"            android:layout_height="48dp"            android:background="#00000000"            android:text="Button"            android:textColor="#ffffff" />        <Button            android:id="@+id/button6"            android:layout_width="match_parent"            android:layout_height="48dp"            android:background="#00000000"            android:text="Button"            android:textColor="#ffffff" />    </LinearLayout>    <LinearLayout        android:id="@+id/content_main"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="#0c0cbfff"        android:gravity="center_vertical"        android:orientation="vertical" >        <TextView            android:id="@+id/textView1"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:text="content" />    </LinearLayout></android.support.v4.widget.SlidingPaneLayout> <!--  -->


android.support.v4.widget.SlidingPaneLayout实现的是有阴影不可缩放的侧滑菜单("menu_main"的192dp是它划出的最大宽度,可根据自己需求调整,"universe_background_1"一张图片)

MainActivity.java


package com.example.testslidingmenu;import android.app.Activity;import android.os.Bundle;import android.support.v4.widget.SlidingPaneLayout;import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.widget.LinearLayout;public class MainActivity extends Activity {    private SlidingPaneLayout mSlidingPaneLayout;    private LinearLayout menu_main, content_main;    @Override    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();    }    public void initView() {mSlidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.sp_main);menu_main = (LinearLayout) findViewById(R.id.menu_main);content_main = (LinearLayout) findViewById(R.id.content_main);mSlidingPaneLayout.setPanelSlideListener(new PanelSlideListener() {    @Override    public void onPanelSlide(View arg0, float arg1) {//arg1 缩放范围0-1// TODO Auto-generated method stubmenu_main.setAlpha(arg1);//透明度menu_main.setScaleY(arg1 );//Ymenu_main.setScaleX(arg1 );//Xmenu_main.setPivotX(arg1-48);//基点Xmenu_main.setPivotY(mSlidingPaneLayout.getHeight()/3*2);content_main.setScaleY(1 - arg1 / 5);    }    @Override    public void onPanelOpened(View arg0) {// TODO Auto-generated method stub    }    @Override    public void onPanelClosed(View arg0) {// TODO Auto-generated method stub    }});    }}


这样就简单的实现了可缩放的slidingmenu了

寡人看的是英文API,params理解的可能会有误差。代码不多,有点android基础的朋友不难理解,代码就是这些,有兴趣的朋友直接复制即可实现(需要android-support-v4.jar);

上次无法缩出屏幕外的问题,解决起来很简单:用“menu_main.setPivotX(arg1-48);”设置下基点,只要保证括号里的params为负就可以在视觉效果上实现缩出屏幕,而“menu_main.setPivotY”的params也可根据需求而定(设置要缩到的position即可);



@author:JRwestbrook(zby)

QQ:990021331

支持原创,转载请注明出处





0 0
原创粉丝点击