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ù)。
以上就是本文的全部?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開源組件SlidingMenu側(cè)滑菜單使用介紹
- Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn)
- Android側(cè)滑菜單控件DrawerLayout使用詳解
- Android自定義實(shí)現(xiàn)側(cè)滑菜單效果
相關(guān)文章
Flutter質(zhì)感設(shè)計(jì)之底部導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之底部導(dǎo)航的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08android藍(lán)牙簡(jiǎn)單開發(fā)示例教程
大家好,本篇文章主要講的是android藍(lán)牙簡(jiǎn)單開發(fā)示例教程,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2021-12-12Android錄制語(yǔ)音文件wav轉(zhuǎn)mp3的方法示例
這篇文章主要介紹了Android錄制語(yǔ)音文件wav轉(zhuǎn)mp3的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Flutter使用AnimationController實(shí)現(xiàn)控制動(dòng)畫
這篇文章主要想帶大家來(lái)嘗試一下Flutter如何使用AnimationController實(shí)現(xiàn)一個(gè)拖拽圖片,然后返回原點(diǎn)的動(dòng)畫,感興趣的可以了解一下2023-05-05Android使用Sensor感應(yīng)器實(shí)現(xiàn)線程中刷新UI創(chuàng)建android測(cè)力計(jì)的功能
這篇文章主要介紹了Android使用Sensor感應(yīng)器實(shí)現(xiàn)線程中刷新UI創(chuàng)建android測(cè)力計(jì)的功能,實(shí)例分析了Android使用Sensor感應(yīng)器實(shí)現(xiàn)UI刷新及創(chuàng)建測(cè)力器的技巧,需要的朋友可以參考下2015-12-12Android自定義View的實(shí)現(xiàn)方法實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家詳細(xì)介紹了Android自定義View的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-09-09Android實(shí)現(xiàn)引導(dǎo)頁(yè)的圓點(diǎn)指示器
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)引導(dǎo)頁(yè)的圓點(diǎn)指示器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06Android之日期及時(shí)間選擇對(duì)話框用法實(shí)例分析
這篇文章主要介紹了Android之日期及時(shí)間選擇對(duì)話框用法,以實(shí)例形式較為詳細(xì)的分析了Android創(chuàng)建日期及時(shí)間選擇對(duì)話框的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09Android開發(fā)之實(shí)現(xiàn)GridView支付寶九宮格
本文給大家介紹android開發(fā)之實(shí)現(xiàn)gridview支付寶九宮格,其原理是讓每個(gè)item都設(shè)置成帶有分割線的背景,在這不透漏太多內(nèi)容,感興趣的朋友請(qǐng)閱讀全文2015-11-11