罪过啊,罪过,很久都没更新博客了,今天刚好有时间,然后现在时下流行很多应用都有侧滑功能,不用说,这就是今天的主题,fragment这也是本人第一次使用这个东西,原来一直在2.3的环境下开发,表示相当压抑,一直没时间研究新特征,表示很无奈,不过以后会有新的东西奉献给大家,在大家继续之前,如果有不会使用的fragment的童鞋,先建议看下面一篇文章,里面讲的很详细,所以我这里就不罗嗦了,哈哈
http://blog.csdn.net/aomandeshangxiao/article/details/7671533
下面就开始正餐了,在这以前也参考一些大牛的神笔,比如eoe超版Kris大神,这里也不废话了,先看效果图:
下面就详细分析整个实现过程:
1、 主界面由两个fragment构成:Content+Menu,我们看看Content的代码:
01
|
public
final
String tag = this .getClass().getName();
|
02
|
public
String text = null ;
|
04
|
public
ContentFragment(String text) {
|
10
|
public
void
onCreate(Bundle savedInstanceState) {
|
11
|
super .onCreate(savedInstanceState);
|
12
|
setRetainInstance( true );
|
13
|
Log.e(tag,
"onCreate:"
+ text);
|
17
|
public
View onCreateView(LayoutInflater inflater, ViewGroup container,
|
18
|
Bundle
savedInstanceState) {
|
19
|
Log.e(tag,
"onCreateView:"
+ text);
|
21
|
View
view = inflater.inflate(R.layout.content_layout, null );
|
22
|
TextView
textView = (TextView) view.findViewById(R.id.content_tv);
|
23
|
if
(!TextUtils.isEmpty(text)) {
|
24
|
textView.setText(text);
|
Content 里面只有一个Textview用来显示内容,我需要在Activity里面告诉它需要显示神马。
我们再来看看Menu里面的代码:
01
|
public
final
String tag = this .getClass().getName();
|
02
|
public
ListView menu_lv = null ;
|
03
|
public
MenuAdapter menuAdapter = null ;
|
04
|
public
Context mContext = null ;
|
06
|
public
MenuFragment(Context mContext) {
|
07
|
this .mContext
= mContext;
|
11
|
public
void
onCreate(Bundle savedInstanceState) {
|
13
|
super .onCreate(savedInstanceState);
|
17
|
public
View onCreateView(LayoutInflater inflater, ViewGroup container,
|
18
|
Bundle
savedInstanceState) {
|
20
|
View
menuView = inflater.inflate(R.layout.menu_layout, null );
|
21
|
menu_lv
= (ListView) menuView.findViewById(R.id.menu_lv);
|
22
|
menuAdapter
= new
MenuAdapter(mContext);
|
23
|
menu_lv.setAdapter(menuAdapter);
|
24
|
menu_lv.setOnItemClickListener(itemListener);
|
28
|
public
OnItemClickListener itemListener = new
OnItemClickListener() {
|
31
|
public
void
onItemClick(AdapterView<?> arg0, View arg1, int
position,
|
34
|
((MainActivity)mContext).getSlidingMenu().toggle();
|
35
|
Toast.makeText(mContext,
menuAdapter.menuStr[position], Toast.LENGTH_SHORT).show();
|
36
|
FragmentTransaction
ft = ((MainActivity)mContext).getFragmentManager().beginTransaction();
|
37
|
ContentFragment
cf = new
ContentFragment(menuAdapter.menuStr[position]);
|
38
|
ft.replace(R.id.main_rl,
cf);
|
这里我有个listview,在listview监听里面我拿到的Main的fragment事物管理,然后处理Content进行显示内容的变更。
下面看看listview 配置的 Adapter代码:
01
|
public
String[] menuStr = { "好友推荐" ,
"关于我" ,
"意见反馈" ,
"版本更新"
};
|
02
|
public
int []
viewId = { R.drawable.recommendfriend, R.drawable.about,
|
03
|
R.drawable.suggestion,
R.drawable.refurbish };
|
04
|
public
LayoutInflater inflater = null ;
|
06
|
public
MenuAdapter(Context context) {
|
07
|
inflater
= LayoutInflater.from(context);
|
11
|
public
int
getCount() {
|
13
|
return
menuStr.length;
|
17
|
public
Object getItem( int
position) {
|
19
|
return
menuStr[position];
|
23
|
public
long
getItemId( int
position) {
|
34
|
public
View getView( int
position, View convertView, ViewGroup parent) {
|
37
|
if
(convertView == null )
{
|
38
|
convertView
= inflater.inflate(R.layout.menu_items, null );
|
39
|
holder
= new
Holder();
|
40
|
holder.items_iv
= (ImageView) convertView
|
41
|
.findViewById(R.id.items_iv);
|
42
|
holder.items_tv
= (TextView) convertView
|
43
|
.findViewById(R.id.items_tv);
|
44
|
convertView.setTag(holder);
|
46
|
holder
= (Holder) convertView.getTag();
|
48
|
holder.items_iv.setBackgroundResource(viewId[position]);
|
49
|
holder.items_tv.setText(menuStr[position]);
|
这里就是Menu显示的内容。
下面来看看Activity里面代码:
01
|
public
FragmentTransaction fraTra = null ;
|
02
|
public
MenuFragment menuFra = null ;
|
03
|
public
ContentFragment contentFra = null ;
|
06
|
public
void
onCreate(Bundle savedInstanceState) {
|
07
|
super .onCreate(savedInstanceState);
|
08
|
setContentView(R.layout.activity_main);
|
09
|
setBehindContentView(R.layout.menu_layout);
|
10
|
fraTra
= this .getFragmentManager().beginTransaction();
|
11
|
menuFra
= new
MenuFragment( this );
|
12
|
contentFra
= new
ContentFragment( "I'm
John" );
|
13
|
fraTra.replace(R.id.menu_fl,
menuFra);
|
14
|
fraTra.replace(R.id.main_rl,
contentFra);
|
17
|
SlidingMenu
sm = getSlidingMenu();
|
18
|
sm.setShadowWidth( 15 );
|
19
|
sm.setBehindOffset( 300 );
|
20
|
sm.setShadowDrawable(R.drawable.shadow);
|
21
|
sm.setFadeDegree( 0 .35f);
|
22
|
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
|
24
|
getActionBar().setDisplayHomeAsUpEnabled( true );
|
28
|
public
boolean
onCreateOptionsMenu(Menu menu) {
|
30
|
getMenuInflater().inflate(R.menu.activity_main,
menu);
|
35
|
public
boolean
onOptionsItemSelected(MenuItem item) {
|
36
|
switch
(item.getItemId()) {
|
37
|
case
android.R.id.home:
|
42
|
return
super .onOptionsItemSelected(item);
|
这里主要是Activity对Menu和Content进行了集中处理、设置侧滑菜单的相关属性。
相信大家看到这里都明白了吧。很简单的一个小例子,但是很实用,时间不早了今天就说到这里,有啥疑问,给我留言,谢谢。
差点忘了,附上源码:
http://www.eoeandroid.com/thread-288729-1-1.html
由于gitHub经常访问不了,先暂时放到eoe上面。
分享到:
相关推荐
在给定的标题“slidingmenu+fragment实现侧滑菜单,内带截图”中,我们可以理解这是一个关于如何使用`SlidingMenu`库结合`Fragment`来构建侧滑菜单的教程或示例项目。 1. **SlidingMenu库**:SlidingMenu是一个开源...
综上所述,这个“利用ViewPager+Fragment+slidingmenu侧滑组件实现的小demo”是一个综合性的Android开发实践,它涵盖了界面组件的集成、用户交互设计以及数据绑定等多个方面,对于理解和掌握Android应用开发有着重要...
在Android应用开发中,"Fragment+slidingmenu+tab页"是一种常见的布局和交互模式,广泛应用于各种新闻、社交和资讯类应用。本系列旨在深入探讨如何高效地整合这三个组件,构建一个功能完善的APP框架。 Fragment是...
在Android应用开发中,"新手 仿QQ Fragment+SlidingMenu+ImageView圆角"这个标题意味着我们要探讨如何为初学者创建一个类似QQ的应用,其中包括使用Fragment、SlidingMenu以及实现ImageView的圆角效果。这三个技术点...
SlidingMenu是一个流行的开源库,用于在Android应用中实现侧滑菜单效果。这种菜单通常隐藏在主界面的左侧或右侧,用户可以通过滑动手势将其滑出。SlidingMenu适用于创建类似Google Maps或Facebook那样的导航模式,...
在Android开发中,`Fragment`、`ViewPager`和`SlidingMenu`是构建复杂用户界面的常用组件。这个"Fragment+ViewPager+SlidingMenu组件实现的demo"是一个很好的实例,展示了如何有效地组合这三个组件来创建一个功能...
尽管在Android设计指南中推荐使用`DrawerLayout`作为侧滑菜单的标准实现,但在旧项目中,SlidingMenu仍然被广泛使用。SlidingMenu可以与`Fragment`结合,将菜单内容作为一个`Fragment`来管理,这样既方便了内容的...
**SlidingMenu**:SlidingMenu是一种侧滑菜单控件,常用于实现类似原生Android系统抽屉效果,让用户从屏幕边缘滑动以展示隐藏的菜单。相比于Android自带的NavigationView,SlidingMenu提供更多的自定义选项和更好的...
在Android应用开发中,"slidingMenu+viewPager+Fragment+listView"是一个常见的组合,用于构建具有侧滑菜单、页面切换、动态内容加载和列表展示功能的复杂用户界面。以下是对这个组合中的各个组件及其相互作用的详细...
学习并实践这个`SlideMenuDemo`项目,将帮助你掌握如何在Android应用中实现功能完善的侧滑菜单,并理解`Fragment`在构建动态、模块化用户界面中的重要作用。同时,这也为你提供了一个良好的起点,可以在此基础上...
在实际应用中,开发者可能会使用第三方库,如`androidx.slidingpanelayout.widget.SlidingPaneLayout`或者`jmolecules/sliding-menu`等来实现SlidingMenu功能。这些库提供了预设的动画效果和易于定制的API,使得集成...
总结来说,这个项目展示了如何在Android中利用ViewPager、SlidingMenu和Fragment构建一个具有侧滑菜单和多视图切换的文件管理器,同时借助SwipeListView增强用户交互,实现了丰富的文件操作功能。通过阅读和理解这个...
本篇将详细讲解如何利用SlidingMenu库在Android应用中实现侧滑栏菜单,并探讨其源码背后的机制。 首先,SlidingMenu库的核心思想是通过叠加两个布局来实现侧滑效果。一个是主内容视图,另一个是隐藏的侧滑菜单。当...
本资源“安卓Android源码——SlidingMenu实现侧滑栏菜单.zip”提供了一种使用SlidingMenu库来构建侧滑栏菜单的具体示例,可以帮助开发者更深入地理解和应用这个库。 首先,SlidingMenu是一个开源的Android库,由...
通过SlidingMenu+Viewpager实现当前最...通过SlidingMenu库与Fragment来实现当前最为流行的侧滑模式。其实涉及到的知识点有: 1.SlidingMenu 2.Fragment 通过layout构建一个Fragment 通过preference 来构建Fragment
在Android应用开发中,侧滑菜单(也称为抽屉式导航)是一种常见的设计模式,它允许用户通过从屏幕边缘向内滑动来显示隐藏的菜单选项。SlidingMenu库是实现这种效果的一个流行选择,而ViewPager则常用于实现页面间的...
本项目是针对Android平台的一个源码实现,主要展示了如何使用SlidingMenu库来构建一个具有侧滑功能的应用。这个项目对于毕业设计和Android开发初学者来说,是一个很好的学习资源。 首先,让我们深入了解一下...
本资源“安卓Android源码——SlidingMenu实现侧滑栏菜单.rar”提供了一个具体实现这一功能的源代码示例,这对于开发者理解和学习如何在自己的应用中集成类似功能非常有帮助。 首先,我们来讨论一下SlidingMenu库。...
在这个例子中,可能使用了开源库`SlidingMenu`,这是一个由Jeremy Feinstein开发的Android库,它为Android应用添加了类似Google Play、Twitter等应用的侧滑菜单效果。开发者可以通过集成这个库快速实现侧滑菜单功能...