我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android学习教程之分类侧滑菜单(5)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android学习教程之分类侧滑菜单(5)

本文实例为大家分享了Android分类侧滑菜单的制作方法,供大家参考,具体内容如下

classificmenuActivity.java代码:


package com.siso.crazyworld;
import android.animation.Animator;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.animation.AccelerateInterpolator;
import android.widget.LinearLayout;
import com.siso.crazyworld.fragment.ContentFragment;
import java.util.ArrayList;
import java.util.List;
import sidemenu.interfaces.Resourceble;
import sidemenu.interfaces.ScreenShotable;
import sidemenu.model.SlideMenuItem;
import sidemenu.util.ViewAnimator;
public class classificmenuActivity extends ActionBarActivity implements ViewAnimator.ViewAnimatorListener {
 private DrawerLayout drawerLayout;
 private ActionBarDrawerToggle drawerToggle;
 private List<SlideMenuItem> list = new ArrayList<>();
 private ContentFragment contentFragment;
 private ViewAnimator viewAnimator;
 private int res = R.drawable.content_music;
 private LinearLayout linearLayout;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_classificmenu);
  contentFragment = ContentFragment.newInstance(R.drawable.content_music);
  getSupportFragmentManager().beginTransaction()
    .replace(R.id.content_frame, contentFragment)
    .commit();
  drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  drawerLayout.setScrimColor(Color.TRANSPARENT);
  linearLayout = (LinearLayout) findViewById(R.id.left_drawer);
  linearLayout.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    drawerLayout.closeDrawers();
   }
  });
  setActionBar();
  createMenuList();
  viewAnimator = new ViewAnimator<>(this, list, contentFragment, drawerLayout, this);
 }
 private void createMenuList() {
  SlideMenuItem menuItem0 = new SlideMenuItem(ContentFragment.CLOSE, R.drawable.icn_close);
  list.add(menuItem0);
  SlideMenuItem menuItem = new SlideMenuItem(ContentFragment.BUILDING, R.drawable.icn_1);
  list.add(menuItem);
  SlideMenuItem menuItem2 = new SlideMenuItem(ContentFragment.BOOK, R.drawable.icn_2);
  list.add(menuItem2);
  SlideMenuItem menuItem3 = new SlideMenuItem(ContentFragment.PAINT, R.drawable.icn_3);
  list.add(menuItem3);
  SlideMenuItem menuItem4 = new SlideMenuItem(ContentFragment.CASE, R.drawable.icn_4);
  list.add(menuItem4);
  SlideMenuItem menuItem5 = new SlideMenuItem(ContentFragment.SHOP, R.drawable.icn_5);
  list.add(menuItem5);
  SlideMenuItem menuItem6 = new SlideMenuItem(ContentFragment.PARTY, R.drawable.icn_6);
  list.add(menuItem6);
  SlideMenuItem menuItem7 = new SlideMenuItem(ContentFragment.MOVIE, R.drawable.icn_7);
  list.add(menuItem7);
 }
 private void setActionBar() {
  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);
  getSupportActionBar().setHomeButtonEnabled(true);
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  drawerToggle = new ActionBarDrawerToggle(
    this,     
    drawerLayout,   
    toolbar, 
    R.string.drawer_open, 
    R.string.drawer_close 
  ) {
   
   public void onDrawerClosed(View view) {
    super.onDrawerClosed(view);
    linearLayout.removeAllViews();
    linearLayout.invalidate();
   }
   @Override
   public void onDrawerSlide(View drawerView, float slideOffset) {
    super.onDrawerSlide(drawerView, slideOffset);
    if (slideOffset > 0.6 && linearLayout.getChildCount() == 0)
     viewAnimator.showMenuContent();
   }
   
   public void onDrawerOpened(View drawerView) {
    super.onDrawerOpened(drawerView);
   }
  };
  drawerLayout.setDrawerListener(drawerToggle);
 }
 @Override
 protected void onPostCreate(Bundle savedInstanceState) {
  super.onPostCreate(savedInstanceState);
  drawerToggle.syncState();
 }
 @Override
 public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  drawerToggle.onConfigurationChanged(newConfig);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.menu_main, menu);
  return true;
 }
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  if (drawerToggle.onOptionsItemSelected(item)) {
   return true;
  }
  switch (item.getItemId()) {
   case R.id.action_settings:
    return true;
   default:
    return super.onOptionsItemSelected(item);
  }
 }
 private ScreenShotable replaceFragment(ScreenShotable screenShotable, int topPosition) {
  this.res = this.res == R.drawable.content_music ? R.drawable.content_films : R.drawable.content_music;
  View view = findViewById(R.id.content_frame);
  int finalRadius = Math.max(view.getWidth(), view.getHeight());
  Animator animator = ViewAnimationUtils.createCircularReveal(view, 0, topPosition, 0, finalRadius);
  animator.setInterpolator(new AccelerateInterpolator());
  animator.setDuration(ViewAnimator.CIRCULAR_REVEAL_ANIMATION_DURATION);
  findViewById(R.id.content_overlay).setBackground(new BitmapDrawable(getResources(), screenShotable.getBitmap()));
  animator.start();
  ContentFragment contentFragment = ContentFragment.newInstance(this.res);
  getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, contentFragment).commit();
  return contentFragment;
 }
 @Override
 public ScreenShotable onSwitch(Resourceble slideMenuItem, ScreenShotable screenShotable, int position) {
  switch (slideMenuItem.getName()) {
   case ContentFragment.CLOSE:
    return screenShotable;
   default:
    return replaceFragment(screenShotable, position);
  }
 }
 @Override
 public void disableHomeButton() {
  getSupportActionBar().setHomeButtonEnabled(false);
 }
 @Override
 public void enableHomeButton() {
  getSupportActionBar().setHomeButtonEnabled(true);
  drawerLayout.closeDrawers();
 }
 @Override
 public void addViewToContainer(View view) {
  linearLayout.addView(view);
 }
}

fragment文件夹下ContentFragment.java代码:


package com.siso.crazyworld.fragment;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.siso.crazyworld.R;
import sidemenu.interfaces.ScreenShotable;
public class ContentFragment extends Fragment implements ScreenShotable {
 public static final String CLOSE = "Close";
 public static final String BUILDING = "Building";
 public static final String BOOK = "Book";
 public static final String PAINT = "Paint";
 public static final String CASE = "Case";
 public static final String SHOP = "Shop";
 public static final String PARTY = "Party";
 public static final String MOVIE = "Movie";
 private View containerView;
 protected ImageView mImageView;
 protected int res;
 private Bitmap bitmap;
 public static ContentFragment newInstance(int resId) {
  ContentFragment contentFragment = new ContentFragment();
  Bundle bundle = new Bundle();
  bundle.putInt(Integer.class.getName(), resId);
  contentFragment.setArguments(bundle);
  return contentFragment;
 }
 @Override
 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  super.onViewCreated(view, savedInstanceState);
  this.containerView = view.findViewById(R.id.container);
 }
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  res = getArguments().getInt(Integer.class.getName());
 }
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
  View rootView = inflater.inflate(R.layout.fragment_main, container, false);
  mImageView = (ImageView) rootView.findViewById(R.id.image_content);
  mImageView.setClickable(true);
  mImageView.setFocusable(true);
  mImageView.setImageResource(res);
  return rootView;
 }
 @Override
 public void takeScreenShot() {
  Thread thread = new Thread() {
   @Override
   public void run() {
    Bitmap bitmap = Bitmap.createBitmap(containerView.getWidth(),
      containerView.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    containerView.draw(canvas);
    ContentFragment.this.bitmap = bitmap;
   }
  };
  thread.start();
 }
 @Override
 public Bitmap getBitmap() {
  return bitmap;
 }
}

activity_classificmenu.xml内容:


<android.support.v4.widget.DrawerLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/drawer_layout"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <io.codetail.widget.RevealFrameLayout
  android:id="@+id/container_frame"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <LinearLayout
   android:id="@+id/content_overlay"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"/>
  <LinearLayout
   android:id="@+id/content_frame"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"/>
  <android.support.v7.widget.Toolbar
   android:id="@+id/toolbar"
   android:layout_height="wrap_content"
   android:layout_width="match_parent"
   android:minHeight="?attr/actionBarSize"
   android:background="?attr/colorPrimary"/>
 </io.codetail.widget.RevealFrameLayout>
 <ScrollView
  android:id="@+id/scrollView"
  android:scrollbarThumbVertical="@android:color/transparent"
  android:layout_width="@dimen/sliding_menu_width"
  android:layout_height="match_parent"
  android:layout_gravity="start|bottom">
  <LinearLayout
   android:id="@+id/left_drawer"
   android:orientation="vertical"
   android:layout_width="@dimen/sliding_menu_width"
   android:layout_height="wrap_content"
   android:divider="@android:color/transparent"
   android:background="@android:color/transparent">
  </LinearLayout>
 </ScrollView>
</android.support.v4.widget.DrawerLayout>

.xml内容:


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" android:drawable="@drawable/item_down"/>
 <item android:state_selected="true" android:drawable="@drawable/item_down"/>
 <item android:state_focused="true" android:drawable="@drawable/item_down"/>
 <item android:drawable="@drawable/item_up"/>
</selector>

fragment_main.xml内容:


<?xml version="1.0" encoding="utf-8"?>
<io.codetail.widget.RevealFrameLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <FrameLayout
  android:id="@+id/container"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <ImageView
   android:scaleType="fitXY"
   android:id="@+id/image_content"
   android:class="lazy" data-src="@drawable/content_films"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>
 </FrameLayout>
</io.codetail.widget.RevealFrameLayout>

strings.xml:


<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="app_name">CrazyWorld</string>
 <string name="action_settings">设置</string>
 <string name="drawer_open">Open</string>
 <string name="drawer_close">Close</string>
</resources>

styles.xml


<resources>
 <!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
 </style>
</resources>

运行结果:

您可能感兴趣的文章:Android仿京东分类模块左侧分类条目效果Android使用Scroll+Fragment仿京东分类效果Android 仿京东、拼多多商品分类页的示例代码Android实现网易Tab分类排序控件实现Android使用分类型RecyclerView仿各大商城首页Android编程实现仿美团或淘宝的多级分类菜单效果示例【附demo源码下载】android使用 ScrollerView 实现 可上下滚动的分类栏实例Android 仿网易新闻客户端分类排序功能Android实现qq列表式的分类悬浮提示Android实现京东App分类页面效果


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android学习教程之分类侧滑菜单(5)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android学习教程之分类侧滑菜单(5)

本文实例为大家分享了Android分类侧滑菜单的制作方法,供大家参考,具体内容如下 classificmenuActivity.java代码:package com.siso.crazyworld; import android.anima
2022-06-06

Android学习教程之悬浮窗菜单制作(9)

本文实例为大家分享了Android悬浮窗菜单的具体代码,供大家参考,具体内容如下 MainActivity.java代码:package siso.multilistview; import android.os.Build; import
2022-06-06

Android学习教程之圆形Menu菜单制作方法(1)

本文实例为大家分享了Android圆形菜单的使用方法,供大家参考,具体内容如下 MainActivity.java代码:package siso.handlerdemo; import android.app.NotificationMan
2022-06-06

Android程序开发之使用Design包实现QQ动画侧滑效果和滑动菜单导航

Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更
2022-06-06

21天学习android开发教程之SQLite分页读取

Android包含了常用于嵌入式系统的SQLite,免去了开发者自己移植安装的功夫。SQLite 支持多数 SQL92 标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLit
2022-06-06

5分钟学会Android设计模式之策略模式StrategyPattern教程

这篇文章主要为大家介绍了5分钟学会Android设计模式之策略模式StrategyPattern教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-15

Android编程学习之抽象类AbsListView用法实例分析

本文实例讲述了Android编程学习之抽象类AbsListView用法。分享给大家供大家参考,具体如下: 一、继承关系 public abstract class AbsListView extends AdapterView
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录