java - Intent 在 Side-Menu.Android 的 Material 设计中 Activity

标签 java android android-intent case material-design

https://github.com/Yalantis/Side-Menu.Android

请帮帮我:(

当我单击侧边菜单中的每个项目时,如何转到命令“intent to other activity”而不是在图像之间传输

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.animation.AccelerateInterpolator;
import android.widget.LinearLayout;

import java.util.ArrayList;
import java.util.List;

import io.codetail.animation.SupportAnimator;
import io.codetail.animation.ViewAnimationUtils;
import yalantis.com.sidemenu.interfaces.Resourceble;
import yalantis.com.sidemenu.interfaces.ScreenShotable;
import yalantis.com.sidemenu.model.SlideMenuItem;
import yalantis.com.sidemenu.sample.fragment.ContentFragment;
import yalantis.com.sidemenu.util.ViewAnimator;


public class MainActivity 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_main);
    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());
    SupportAnimator animator = ViewAnimationUtils.createCircularReveal(view, 0, topPosition, 0, finalRadius);
    animator.setInterpolator(new AccelerateInterpolator());
    animator.setDuration(ViewAnimator.CIRCULAR_REVEAL_ANIMATION_DURATION);

    findViewById(R.id.content_overlay).setBackgroundDrawable(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 ) 去寻找如何使用 startActivity 然后你可以使用 Intent & putExtra 你的 resId。

    @Override
public ScreenShotable onSwitch(Resourceble resourceble, ScreenShotable screenShotable, int position) {

    int primaryColorCanvas = R.color.colorPrimary;

    switch (resourceble.getName()) {
        case ContentFragment.CLOSE:
            return screenShotable;

        case ContentFragment.DASHBOARD:
            DashboardFragment fragment = DashboardFragment.newInstance(primaryColorCanvas);
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
            return replaceFragment(fragment, position);

        case ContentFragment.FRIDGE:
            FridgeFragment fragment2 = FridgeFragment.newInstance(primaryColorCanvas);
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment2).commit();
            return replaceFragment(fragment2, position);

        case ContentFragment.COOKBOOK:
            DashboardFragment fragment3 = DashboardFragment.newInstance(primaryColorCanvas);
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment3).commit();
            return replaceFragment(fragment3, position);

        case ContentFragment.SHOPPINGLIST:
        case ContentFragment.FEEDBACK:
            ContentFragment fragment4 = ContentFragment.newInstance(primaryColorCanvas);
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,fragment4).commit();
            return replaceFragment(fragment4, position);
        default:
            ContentFragment fragment0 = ContentFragment.newInstance(primaryColorCanvas);
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,fragment0).commit();
            return replaceFragment(fragment0, position);
    }
}

private ScreenShotable replaceFragment(ScreenShotable screenShotable, int position) {

    int finalRadius = Math.max(contentFrame.getWidth(), contentFrame.getHeight());
    SupportAnimator animator = ViewAnimationUtils.createCircularReveal(contentFrame, 0, position, 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();
    return screenShotable;
}

private void initializedMenu() {
    SlideMenuItem menuItem0 = new SlideMenuItem(contentFragment.CLOSE, R.drawable.back_btn);
    list.add(menuItem0);
    SlideMenuItem menuItem = new SlideMenuItem(contentFragment.DASHBOARD, R.drawable.dashboard_icon_a);
    list.add(menuItem);
    SlideMenuItem menuIte2 = new SlideMenuItem(contentFragment.FRIDGE, R.drawable.fridge_icon_a);
    list.add(menuIte2);
    SlideMenuItem menuItem3 = new SlideMenuItem(contentFragment.COOKBOOK, R.drawable.cookbook_icon_a);
    list.add(menuItem3);
    SlideMenuItem menuItem4 = new SlideMenuItem(contentFragment.SHOPPINGLIST, R.drawable.right_icon_a);
    list.add(menuItem4);
    SlideMenuItem menuItem5 = new SlideMenuItem(contentFragment.FEEDBACK, R.drawable.feedback_icon_a);
    list.add(menuItem5);

}

请记住,我已经在 ContentFragment 中分配了静态字符串变量。 您可以在 initializedMenu() 中看到。

希望对您有所帮助!

关于java - Intent 在 Side-Menu.Android 的 Material 设计中 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512659/

相关文章:

html - 使用 Android Intent 发送 HTML 邮件

java - 在java中合并json对象

Android Firestore : Failed to gain exclusive lock to the Firestore client's offline persistence

java - 使用 GSON 反序列化 JSON 文件

android - 如何确保我的应用程序无法安装在 Marshmallow 上

java - 从 SurfaceView 内部启动 Activity

android - 启动器的 Intent 操作

java - 哪些应用程序服务器支持 WAR 中的多版本 JAR(如果有)?

java - Jasper Reports为子报表设置不同的java bean集合数据适配器

java - Spring Boot 不绑定(bind)到 Tomcat 端口