登录 立即注册
安币:
查看: 51|回复: 4
打印 上一主题 下一主题

重庆时时彩倍投技巧| Android 开源项目侧边栏菜单(SlidingMenu)使用详解,slidingmenu

[复制链接]

284

主题

285

帖子

1590

安币

手工艺人

跳转到指定楼层
楼主
发表于 4 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文来源:http://www.oneupabq.com/a/www.17yy.com/

重庆时时彩独胆倍投 www.oneupabq.com,苏恭主心腹卒痛,李珣以之治伤折打损,一切疼痛,血气搅刺,内伤血聚者,诚为此耳。用于:余热未净,胃阴不足;此证多由热邪渐解,胃中津伤所致,症见:口干、舌燥、口渴等。


        项目下载地址:https://github.com/jfeinstein10/slidingmenu
注意: slidingmenu依赖于另一个开源项目actionbarsherlock,所以需要将actionbarsherlock添加作为slidingmenu的库工程,否则会报资源找不到错误。
然后再将slidingmenu添加到自己的工程中去。

        slidingmenu集成常见错误:

        jar mismatch! fix your dependencies :引用的工程和自身工程以来的jar包版本不一致导致的冲突。确保slidingmenu和actionbarsherlock所使用的jar包版本一致

        如果使用到actionbarsherlock的相关api,可能报找不到getsupportactionbar等actionbarsherlock的方法。原因是使用actionbarsherlock的activity需继承于sherlockactivity,修改slidingmenu library中的slidingfragmentactivity,让它继承于sherlockfragmentactivity,重新编译library导入。

        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();//显示内容

        menu.setonopenlistener(onopenlistener);//监听slidingmenu打开

        关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after

        menu.onclosedlistener(onclosedlistener);//监听slidingmenu关闭时事件

        menu.onclosedlistener(onclosedlistener);//监听slidingmenu关闭后事件

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

        menu.setmode(slidingmenu.left_right);属性,然后设置右侧菜单的布局文件

        menu.setsecondaryshadowdrawable(r.drawable.shadowright);//右侧菜单的阴影图片

        使用fragment实现slidingmenu:

        1.首先activity继承自slidingmenu包下的slidingfragmentactivity

        2. setcontentview(r.layout.content_frame);//该layout为一个全屏的framelayout

        3. setbehindcontentview(r.layout.menu_frame);//设置slidingmenu使用的布局,同样是一个全屏的framelayout

        4.设置slidingmenu左侧菜单的fragment

[Java] 查看源文件 复制代码
setbehindcontentview(r.layout.menu_frame); 
fragmenttransaction t = this.getsupportfragmentmanager().begintransaction(); 
leftmenufragment = new menufragment(); 
t.replace(r.id.menu_frame, leftmenufragment); 
t.commit(); 

        menufragment其实就是一个fragment,显示一个listview
然后点击listview的每一项的时候,通知activity切换不同的fragment
为了看清效果,我们新建5个frament,分别是
fragment1, fragment2, fragment3, fragment4, fragment5
在slidingmenu中用listview显示。

        设置主页面显示的fragment:

[Java] 查看源文件 复制代码
if (savedinstancestate == null) {//== null的时候新建fragment1 
contentfragment = new fragment1(); 
} else {//不等于null,直接get出来 
//不等于null,找出之前保存的当前activity显示的fragment 
contentfragment = getsupportfragmentmanager().getfragment(savedinstancestate, "contentfragment"); 
} 
//设置内容fragment 
getsupportfragmentmanager() 
.begintransaction() 
.replace(r.id.content_frame, contentfragment) 
.commit(); 

        在activity的onsaveinstancestate中保存当前显示的fragment
getsupportfragmentmanager().putfragment(outstate, "contentfragment", contentfragment);

        设置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);//设置滑动的区域

        支持右侧划出菜单:

        //slidingmenu可以同时支持划出左右两侧的菜单,互不冲突,而且动画优美,体验良好。
sm.setsecondarymenu(r.layout.menu_frame2);//设置右侧菜单
sm.setsecondaryshadowdrawable(r.drawable.shadowright);//设置右侧菜单阴影的图片资源
//右侧slidingmenu的fragment
getsupportfragmentmanager().begintransaction().replace(r.id.menu_frame2, new samplelistfragment()).commit();

        设置actionbar可以被点击:

        getsupportactionbar().sethomebuttonenabled(true);//actionbar主按键可以被点击
getsupportactionbar().setdisplayhomeasupenabled(true);//显示向左的图标
setslidingactionbarenabled(false);//左右两侧slidingmenu的fragment是否显示标题栏

        切换主页面显示的fragment:

        public void switchcontent(fragment f) {
//给内容fragment赋值,并在onsaveinstancestate时保存这个fragment
contentfragment = f;
fragmenttransaction t = getsupportfragmentmanager().begintransaction();
t.replace(r.id.content_frame, f);
t.commit();
sm.showcontent();

        使用普通activity实现slidingmenu:

        slidingmenu menu = new slidingmenu(this);//直接new,而不是getslidingmenu
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);
menu.setbehindwidth(400);//设置slidingmenu菜单的宽度
menu.setfadedegree(0.35f);
menu.attachtoactivity(this, slidingmenu.sliding_content);//必须调用
menu.setmenu(r.layout.menu_layout_left);//就是普通的layout布局
menu.setbehindcanvastransformer(mtransformer);

        相应slidingmenu里的点击事件,因为slidingmenu已经被包含在了activity中了,所以直接findviewbyid(id),拿到view之后就可以进行相应的处理。

        支持左右两侧都能划出菜单

        menu.setsecondarymenu(r.layout.menu_layout_right);
menu.setsecondaryshadowdrawable(r.drawable.shadowright);

        右侧菜单一样直接findviewbyid(id),拿到view之后就可以任意处理了

        更换slidingmenu的动画

        slidingmenu支持左滑或者右滑时定义不同的动画,包括拉伸,缩放,旋转等动画。就是在滑动的过程中,slidingmenu如何出现的动画。
动画使用也很简单
首先定义canvastransformer mtransformer;变量:

[Java] 查看源文件 复制代码
mtransformer = new canvastransformer() { 
@override 
public void transformcanvas(canvas canvas, float percentopen) {
float scale = (float) (percentopen*0.25 + 0.75); 
canvas.scale(scale, scale, canvas.getwidth()/2, canvas.getheight()/2);
}
};

        然后将mtransformer对象设置给slidingmenu即可,这个是缩放动画:

[Java] 查看源文件 复制代码
private void initslidupcanvastransformer() { 
mtransformer = new canvastransformer() { 
 
@override 
public void transformcanvas(canvas canvas, float percentopen) { 
canvas.translate(0, canvas.getheight()*(1-interp.getinterpolation(percentopen))); 
} 
}; 
} 
 
private static interpolator interp = new interpolator() { 
@override 
public float getinterpolation(float t) { 
t -= 1.0f; 
return t * t * t + 1.0f; 
} 
}; 

        拉伸动画:

[Java] 查看源文件 复制代码
mtransformer = new canvastransformer() { 
@override 
public void transformcanvas(canvas canvas, float percentopen) { 
canvas.scale(percentopen, 1, 0, 0); 
} 
});


分享到:  QQ好友和群 QQ空间 微信
收藏收藏 支持支持 反对反对

9

主题

8766

帖子

-2379

安币

限制会员

沙发
发表于 3 天前 | 只看该作者
感觉楼主很用心,辛苦啦~

27

主题

8939

帖子

-1639

安币

重庆时时彩独胆倍投限制会员

板凳
发表于 3 天前 | 只看该作者
感觉楼主很用心,辛苦啦~

11

主题

8656

帖子

-1101

安币

限制会员

地板
发表于 前天 17:11 | 只看该作者
感谢分享,楼主V5~

20

主题

8481

帖子

-2452

安币

限制会员

5#
发表于 14 小时前 | 只看该作者
楼主威武,以后多发干货,多办活动~!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

重庆时时彩独胆倍投广告投放| 重庆时时彩独胆倍投申请友链|手机版|站点统计|重庆时时彩独胆倍投 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
辽宁35选7走势图网 青海快3网址 内蒙古时时彩几点开始 北京11选5开奖记录 香港赛马会娱乐城轮盘打不开
八马彩票安全吗 炸金花下载大全 河北11选5彩票控 吉林快3开奖号码 快赢彩票