android侧滑 菜单教程,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 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, /* host Activity */

drawerLayout, /* DrawerLayout object */

toolbar, /* nav drawer icon to replace 'Up' caret */

R.string.drawer_open, /* "open drawer" description */

R.string.drawer_close /* "close drawer" description */

) {

/** Called when a drawer has settled in a completely closed state. */

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();

}

/** Called when a drawer has settled in a completely open state. */

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内容:

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/drawer_layout"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/container_frame"

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/content_overlay"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"/>

android:id="@+id/content_frame"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"/>

android:id="@+id/toolbar"

android:layout_height="wrap_content"

android:layout_width="match_parent"

android:minHeight="?attr/actionBarSize"

android:background="?attr/colorPrimary"/>

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">

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">

.xml内容:

fragment_main.xml内容:

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/container"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:scaleType="fitXY"

android:id="@+id/image_content"

android:src="@drawable/content_films"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

strings.xml:

CrazyWorld

设置

Open

Close

styles.xml

运行结果:

3da3148d1d52c89f6d3c0267e6d010f0.png

5fc2f0a31632451b5c2878ec54b94b3f.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值