Android UI實(shí)現(xiàn)SlidingMenu側(cè)滑菜單效果
本篇博客給大家分享一個(gè)效果比較好的側(cè)滑菜單的Demo,實(shí)現(xiàn)點(diǎn)擊左邊菜單切換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;
/**
* @date 2014/11/14
* @author wuwenjie
* @description 主界面
*/
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); // 無(wú)標(biāo)題
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);
}
/**
* 初始化側(cè)邊欄
*/
private void initSlidingMenu(Bundle savedInstanceState) {
// 如果保存的狀態(tài)不為空則得到之前保存的Fragment,否則實(shí)例化MyFragment
if (savedInstanceState != null) {
mContent = getSupportFragmentManager().getFragment(
savedInstanceState, "mContent");
}
if (mContent == null) {
mContent = new TodayFragment();
}
// 設(shè)置左側(cè)滑動(dòng)菜單
setBehindContentView(R.layout.menu_frame_left);
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new LeftFragment()).commit();
// 實(shí)例化滑動(dòng)菜單對(duì)象
SlidingMenu sm = getSlidingMenu();
// 設(shè)置可以左右滑動(dòng)的菜單
sm.setMode(SlidingMenu.LEFT);
// 設(shè)置滑動(dòng)陰影的寬度
sm.setShadowWidthRes(R.dimen.shadow_width);
// 設(shè)置滑動(dòng)菜單陰影的圖像資源
sm.setShadowDrawable(null);
// 設(shè)置滑動(dòng)菜單視圖的寬度
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 設(shè)置漸入漸出效果的值
sm.setFadeDegree(0.35f);
// 設(shè)置觸摸屏幕的模式,這里設(shè)置為全屏
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 設(shè)置下方視圖的在滾動(dòng)時(shí)的縮放比例
sm.setBehindScrollScale(0.0f);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "mContent", mContent);
}
/**
* 切換Fragment
*
* @param fragment
*/
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;
}
}
}
側(cè)邊欄菜單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;
/**
* @date 2014/11/14
* @author wuwenjie
* @description 側(cè)邊欄菜單
*/
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: // 討論集會(huì)
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: // 我的評(píng)論
newContent = new MyCommentsFragment();
title = getString(R.string.myComments);
break;
case R.id.tvMySettings: // 設(shè)置
newContent = new MySettingsFragment();
title = getString(R.string.settings);
break;
default:
break;
}
if (newContent != null) {
switchFragment(newContent, title);
}
}
/**
* 切換fragment
* @param fragment
*/
private void switchFragment(Fragment fragment, String title) {
if (getActivity() == null) {
return;
}
if (getActivity() instanceof MainActivity) {
MainActivity fca = (MainActivity) getActivity();
fca.switchConent(fragment, title);
}
}
}
上面是核心代碼,引入SlidingMenu開(kāi)源庫(kù)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實(shí)現(xiàn)原生側(cè)滑菜單的超簡(jiǎn)單方式
- Android滑動(dòng)優(yōu)化高仿QQ6.0側(cè)滑菜單(滑動(dòng)優(yōu)化)
- android RecyclerView側(cè)滑菜單,滑動(dòng)刪除,長(zhǎng)按拖拽,下拉刷新上拉加載
- Android使用自定義控件HorizontalScrollView打造史上最簡(jiǎn)單的側(cè)滑菜單
- Android使用DrawerLayout實(shí)現(xiàn)仿QQ雙向側(cè)滑菜單
- 代碼分析Android實(shí)現(xiàn)側(cè)滑菜單
- Android開(kāi)源組件SlidingMenu側(cè)滑菜單使用介紹
- Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn)
- Android側(cè)滑菜單控件DrawerLayout使用詳解
- Android自定義實(shí)現(xiàn)側(cè)滑菜單效果
相關(guān)文章
Android使用相機(jī)實(shí)現(xiàn)拍照存儲(chǔ)及展示功能詳解
這篇文章主要介紹了Android使用相機(jī)實(shí)現(xiàn)拍照存儲(chǔ)及展示功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
ImageView的屬性android:scaleType的作用分析
本篇文章是對(duì)ImageView的屬性android:scaleType的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
5個(gè)Android開(kāi)發(fā)中比較常見(jiàn)的內(nèi)存泄漏問(wèn)題及解決辦法
本文主要介紹了5個(gè)Android開(kāi)發(fā)中比較常見(jiàn)的內(nèi)存泄漏問(wèn)題及解決辦法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫(huà)的相關(guān)資料,仿美團(tuán)、京東數(shù)據(jù)加載動(dòng)畫(huà)、小人奔跑動(dòng)畫(huà),感興趣的小伙伴們可以參考一下2016-04-04
解決Android 5.1限制外置SD卡寫(xiě)入權(quán)限的問(wèn)題
今天小編就為大家分享一篇解決Android 5.1限制外置SD卡寫(xiě)入權(quán)限的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Android 錢(qián)包支付之輸入支付密碼的實(shí)現(xiàn)步驟
這篇文章主要介紹了Android 錢(qián)包支付之輸入支付密碼,需要的朋友可以參考下2018-04-04
Android實(shí)現(xiàn)圓角邊框?qū)υ?huà)框的方法
在最近公司的Android項(xiàng)目,客戶(hù)畫(huà)好了界面,需求是一個(gè)圓角邊框的對(duì)話(huà)框效果,通過(guò)查找一些資料找到了解決方法,現(xiàn)在將方法總結(jié)后分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01

