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"一张图片)
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 stub
menu_main.setAlpha(arg1);//透明度
menu_main.setScaleY(arg1 );//Y
menu_main.setScaleX(arg1 );//X
menu_main.setPivotX(arg1-48);//基点X
menu_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
支持原创,转载请注明出处