美文网首页
使用enum更改Activity管理统条

使用enum更改Activity管理统条

作者: heiheiwanne | 来源:发表于2016-09-06 15:57 被阅读27次

这个例子使用枚举,即做了Activity的统跳管理,又将每个Activity的跳转放到了内部,可以学习下。

package com.bob.arclayout;


import android.content.Context;

import com.bob.library.Arc;

public enum Demo {

    //Basic
    CENTER(R.string.title_center, R.string.note_center, R.layout.arc_large, Arc.CENTER),
    LEFT(R.string.title_left, R.string.note_left, R.layout.arc_medium, Arc.LEFT),
    RIGHT(R.string.title_right, R.string.note_right, R.layout.arc_medium, Arc.RIGHT),
    TOP(R.string.title_top, R.string.note_top, R.layout.arc_medium, Arc.TOP),
    TOP_LEFT(R.string.title_top_left, R.string.note_top_left, R.layout.arc_small, Arc.TOP_LEFT),
    TOP_RIGHT(R.string.title_top_right, R.string.note_top_right, R.layout.arc_small, Arc.TOP_RIGHT),
    BOTTOM(R.string.title_bottom, R.string.note_bottom, R.layout.arc_medium, Arc.BOTTOM),
    BOTTOM_LEFT(R.string.title_bottom_left, R.string.note_bottom_left, R.layout.arc_small, Arc.BOTTOM_LEFT),
    BOTTOM_RIGHT(R.string.title_bottom_right, R.string.note_bottom_right, R.layout.arc_small, Arc.BOTTOM_RIGHT),
    TEXT(R.string.text, R.string.myText,  R.layout.text, Arc.BOTTOM){
        @Override
        public void startActivity(Context context) {
            TestActivity.startActivity(context, this);
        }
    },

    //Advanced
    ADVANCED_FREE_ANGLE(R.string.title_advanced_freeangle, R.string.note_advanced_freeangle, R.layout.arc_free_angle, Arc.CENTER) {
        @Override
        public void startActivity(Context context) {
            DemoFreeAngleActivity.startActivity(context, this);
        }

    },

    ADVANCED_TUMBLR(R.string.title_advanced_tumblr, 0, 0, null) {
        @Override
        public void startActivity(Context context) {
            DemoLikeTumblrActivity.startActivity(context, this);
        }
    },
    ADVANCED_PATH(R.string.title_advanced_path, 0, 0, null) {
        @Override
        public void startActivity(Context context) {
            DemoLikePathActivity.startActivity(context, this);
        }
    }
    ;

    public final int titleResId;
    public final int noteResId;
    public final int layoutResId;
    public final Arc arc;

    Demo(int titleResId, int noteResId, int layoutResId, Arc arc) {
        this.titleResId = titleResId;
        this.noteResId = noteResId;
        this.layoutResId = layoutResId;
        this.arc = arc;
    }

    public void startActivity(Context context) {
        DemoActivity.startActivity(context, this);
    }

}

package com.bob.arclayout;


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.text.Html;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.bob.library.ArcLayout;

public class DemoActivity extends ActionBarActivity implements View.OnClickListener {

    private static final String KEY_DEMO = "demo";

    public static void startActivity(Context context, Demo demo) {
        Intent intent = new Intent(context, DemoActivity.class);
        intent.putExtra(KEY_DEMO, demo.name());
        context.startActivity(intent);
    }

    private static Demo getDemo(Intent intent) {
        return Demo.valueOf(intent.getStringExtra(KEY_DEMO));
    }

    Toast mToast = null;
    ArcLayout mArcLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Demo demo = getDemo(getIntent());

        setContentView(demo.layoutResId);
        mArcLayout = (ArcLayout) findViewById(R.id.arc_layout);
        mArcLayout.setArc(demo.arc);

        for (int i = 0, size = mArcLayout.getChildCount(); i < size; i++) {
            mArcLayout.getChildAt(i).setOnClickListener(this);
        }

        TextView note = (TextView) findViewById(R.id.note_text);
        note.setText(Html.fromHtml(getString(demo.noteResId)));
        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)note.getLayoutParams();
        switch (demo.arc) {
            case TOP:
            case TOP_LEFT:
            case TOP_RIGHT:
                lp.gravity = Gravity.BOTTOM;
                break;
            case BOTTOM:
            case BOTTOM_LEFT:
            case BOTTOM_RIGHT:
                lp.gravity = Gravity.TOP;
                break;
            default:
                lp.gravity = Gravity.TOP;
        }

        ActionBar bar = getSupportActionBar();
        bar.setTitle(demo.titleResId);
        bar.setDisplayHomeAsUpEnabled(true);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_demo, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                break;
            case R.id.menu_reverse:
                mArcLayout.setReverseAngle(!mArcLayout.isReverseAngle());
                break;
            default:
                return super.onOptionsItemSelected(item);
        }
        return true;
    }

    @Override
    public void onClick(View v) {
        if (v instanceof Button) {
            showToast((Button) v);
        }
    }

    private void showToast(Button btn) {
        if (mToast != null) {
            mToast.cancel();
        }

        String text = "Clicked: " + btn.getText();
        mToast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
        mToast.show();

    }
}

相关文章

网友评论

      本文标题:使用enum更改Activity管理统条

      本文链接:https://www.haomeiwen.com/subject/vyvdettx.html