栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 移动开发 > Android

Android UI实现SlidingMenu侧滑菜单效果

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android UI实现SlidingMenu侧滑菜单效果

本篇博客给大家分享一个效果比较好的侧滑菜单的Demo,实现点击左边菜单切换Fragment。
效果如下:

 


主Activity代码:

package com.infzm.slidingmenu.demo; 
 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.Window; 
import android.widget.ImageView; 
import android.widget.TextView; 
 
import com.infzm.slidingmenu.demo.fragment.LeftFragment; 
import com.infzm.slidingmenu.demo.fragment.TodayFragment; 
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; 
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; 
 
 
public class MainActivity extends SlidingFragmentActivity implements 
    onClickListener { 
 
  private ImageView topButton; 
  private Fragment mContent; 
  private TextView topTextView; 
 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    initSlidingMenu(savedInstanceState); 
 
    topButton = (ImageView) findViewById(R.id.topButton); 
    topButton.setonClickListener(this); 
    topTextView = (TextView) findViewById(R.id.topTv); 
  } 
 
   
  private void initSlidingMenu(Bundle savedInstanceState) { 
    // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment 
    if (savedInstanceState != null) { 
      mContent = getSupportFragmentManager().getFragment( 
   savedInstanceState, "mContent"); 
    } 
 
    if (mContent == null) { 
      mContent = new TodayFragment(); 
    } 
 
    // 设置左侧滑动菜单 
    setBehindContentView(R.layout.menu_frame_left); 
    getSupportFragmentManager().beginTransaction() 
 .replace(R.id.menu_frame, new LeftFragment()).commit(); 
 
    // 实例化滑动菜单对象 
    SlidingMenu sm = getSlidingMenu(); 
    // 设置可以左右滑动的菜单 
    sm.setMode(SlidingMenu.LEFT); 
    // 设置滑动阴影的宽度 
    sm.setShadowWidthRes(R.dimen.shadow_width); 
    // 设置滑动菜单阴影的图像资源 
    sm.setShadowDrawable(null); 
    // 设置滑动菜单视图的宽度 
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    // 设置渐入渐出效果的值 
    sm.setFadeDegree(0.35f); 
    // 设置触摸屏幕的模式,这里设置为全屏 
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
    // 设置下方视图的在滚动时的缩放比例 
    sm.setBehindScrollScale(0.0f); 
 
  } 
 
  @Override 
  protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    getSupportFragmentManager().putFragment(outState, "mContent", mContent); 
  } 
 
   
  public void switchConent(Fragment fragment, String title) { 
    mContent = fragment; 
    getSupportFragmentManager().beginTransaction() 
 .replace(R.id.content_frame, fragment).commit(); 
    getSlidingMenu().showContent(); 
    topTextView.setText(title); 
  } 
 
  @Override 
  public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.topButton: 
      toggle(); 
      break; 
    default: 
      break; 
    } 
  } 
 
} 

侧边栏菜单Fragment

package com.infzm.slidingmenu.demo.fragment; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
 
import com.infzm.slidingmenu.demo.MainActivity; 
import com.infzm.slidingmenu.demo.R; 
 
public class LeftFragment extends Fragment implements OnClickListener{ 
  private View todayView; 
  private View lastListView; 
  private View discussView; 
  private View favoritesView; 
  private View commentsView; 
  private View settingsView; 
   
   
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
  } 
   
  @Override 
  public void onAttach(Activity activity) { 
    super.onAttach(activity); 
  } 
   
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.layout_menu, null); 
    findViews(view); 
     
    return view; 
  } 
   
   
  public void findViews(View view) { 
    todayView = view.findViewById(R.id.tvToday); 
    lastListView = view.findViewById(R.id.tvLastlist); 
    discussView = view.findViewById(R.id.tvDiscussMeeting); 
    favoritesView = view.findViewById(R.id.tvMyFavorites); 
    commentsView = view.findViewById(R.id.tvMyComments); 
    settingsView = view.findViewById(R.id.tvMySettings); 
     
    todayView.setonClickListener(this); 
    lastListView.setonClickListener(this); 
    discussView.setonClickListener(this); 
    favoritesView.setonClickListener(this); 
    commentsView.setonClickListener(this); 
    settingsView.setonClickListener(this); 
  } 
   
  @Override 
  public void onDestroyView() { 
    super.onDestroyView(); 
  } 
   
  @Override 
  public void onDestroy() { 
    super.onDestroy(); 
  } 
 
  @Override 
  public void onClick(View v) { 
    Fragment newContent = null; 
    String title = null; 
    switch (v.getId()) { 
    case R.id.tvToday: // 今日 
      newContent = new TodayFragment(); 
      title = getString(R.string.today); 
      break; 
    case R.id.tvLastlist:// 往期列表 
      newContent = new LastListFragment(); 
      title = getString(R.string.lastList); 
      break; 
    case R.id.tvDiscussMeeting: // 讨论集会 
      newContent = new DiscussFragment(); 
      title = getString(R.string.discussMeetting); 
      break; 
    case R.id.tvMyFavorites: // 我的收藏 
      newContent = new MyFavoritesFragment(); 
      title = getString(R.string.myFavorities); 
      break; 
    case R.id.tvMyComments: // 我的评论 
      newContent = new MyCommentsFragment(); 
      title = getString(R.string.myComments); 
      break; 
    case R.id.tvMySettings: // 设置 
      newContent = new MySettingsFragment(); 
      title = getString(R.string.settings); 
      break; 
    default: 
      break; 
    } 
    if (newContent != null) { 
      switchFragment(newContent, title); 
    } 
  } 
   
   
  private void switchFragment(Fragment fragment, String title) { 
    if (getActivity() == null) { 
      return; 
    } 
    if (getActivity() instanceof MainActivity) { 
      MainActivity fca = (MainActivity) getActivity(); 
      fca.switchConent(fragment, title); 
    } 
  } 
   
}

上面是核心代码,引入SlidingMenu开源库。

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

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/160372.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号