欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现网易新闻客户端侧滑菜单(1)

程序员文章站 2024-03-02 23:26:52
android中很多产品(比如360手机助手、网易菜单...)都采用侧滑菜单的展现形式,采用这种展现形式 1、能把更多的展现内容都存放在菜单中 2、设计上也能体现出视觉...

android中很多产品(比如360手机助手、网易菜单...)都采用侧滑菜单的展现形式,采用这种展现形式

1、能把更多的展现内容都存放在菜单中

2、设计上也能体现出视觉效果

现在这种交互方式越来越流行了,虽然这种交互方式可以通过自定义组件的方式来实现,但是用三方开源库更简单。

slidingmenu:slidingmenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果。

地址:https://github.com/jfeinstein10/slidingmenu.git

现在新建一个android项目slidingmenudemo,

activity_main:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
  >
 <textview
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:text="内容" 
  android:textsize="24sp"
  android:textcolor="#000"
  android:gravity="center"
  />
</relativelayout>

左边的菜单activity_menu:

<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:layout_width="fill_parent"
  android:layout_height="40dp"
  android:gravity="center" 
  android:text="体育"
  android:textsize="16sp"
  android:textcolor="#000"  
  />
 <textview
  android:layout_width="fill_parent"
  android:layout_height="40dp"
  android:gravity="center" 
  android:text="娱乐"
  android:textsize="16sp"
  android:textcolor="#000"  
  />
 <textview
  android:layout_width="fill_parent"
  android:layout_height="40dp"
  android:gravity="center" 
  android:text="财经"
  android:textsize="16sp"
  android:textcolor="#000"  
  />
 <textview
  android:layout_width="fill_parent"
  android:layout_height="40dp"
  android:gravity="center" 
  android:text="科技"
  android:textsize="16sp"
  android:textcolor="#000"  
  />
 <textview
  android:layout_width="fill_parent"
  android:layout_height="40dp"
  android:gravity="center" 
  android:text="杭州"
  android:textsize="16sp"
  android:textcolor="#000"  
  />
</linearlayout>

mainactivity.java:

package com.example.slidingmenudemo;
import com.jeremyfeinstein.slidingmenu.lib.slidingmenu;
import com.jeremyfeinstein.slidingmenu.lib.app.slidingfragmentactivity;
import android.os.bundle;
import android.view.window;
import android.app.activity;

public class mainactivity extends slidingfragmentactivity {
private slidingmenu sm;
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
requestwindowfeature(window.feature_no_title);
// 1 设置滑动菜单旁边的页面
setbehindcontentview(r.layout.activity_menu);
setcontentview(r.layout.activity_main);

//2 获取滑动菜单
sm = getslidingmenu();

//3 设置左滑菜单

sm.setmode(slidingmenu.left);

// 4 设置滑动菜单出来之后,内容页剩余的宽度
sm.setbehindoffsetres(r.dimen.slidingmenu_offset);
sm.settouchmodeabove(slidingmenu.touchmode_fullscreen);

// 6 设置阴影
sm.setshadowdrawable(r.drawable.shadow);
sm.setshadowwidthres(r.dimen.shadow_width);
}
}

注意activity一定要继承slidingfragmentactivity。

现在看看slidingmenu一些属性:

menu.setmode(slidingmenu.left);//设置左滑菜单
menu.settouchmodeabove(slidingmenu.touchmode_fullscreen);//设置滑动的屏幕范围,该设置为全屏区域都可以滑动
menu.setshadowdrawable(r.drawable.shadow);//设置阴影图片
menu.setshadowwidthres(r.dimen.shadow_width);//设置阴影图片的宽度
menu.setbehindoffsetres(r.dimen.slidingmenu_offset);//slidingmenu划出时主页面显示的剩余宽度
menu.setbehindwidth(400);//设置slidingmenu菜单的宽度
menu.setfadedegree(0.35f);//slidingmenu滑动时的渐变程度
menu.attachtoactivity(this, slidingmenu.sliding_content);//使slidingmenu附加在activity上
menu.setmenu(r.layout.menu_layout);//设置menu的布局文件
menu.toggle();//动态判断自动关闭或开启slidingmenu
menu.showmenu();//显示slidingmenu
menu.showcontent();//显示内容

左右都可以划出slidingmenu菜单只需要设置

menu.setmode(slidingmenu.left_right);属性,然后设置右侧菜单的布局文件
menu.setsecondaryshadowdrawable(r.drawable.shadowright);//右侧菜单的阴影图片

设置slidingmenu属性

sm = getslidingmenu();
//如果只显示左侧菜单就是用left,右侧就right,左右都支持就left_right
sm.setmode(slidingmenu.left_right);//设置菜单滑动模式,菜单是出现在左侧还是右侧,还是左右两侧都有
sm.setshadowdrawable(r.drawable.shadow);//设置阴影的图片资源
sm.setshadowwidthres(r.dimen.shadow_width);//设置阴影图片的宽度
//sm.setbehindwidth(200);//设置菜单的宽
sm.setbehindoffsetres(r.dimen.slidingmenu_offset);//slidingmenu划出时主页面显示的剩余宽度
sm.settouchmodeabove(slidingmenu.touchmode_fullscreen);//设置滑动的区域

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。