package com.elphin.framework.app.fpstack; import android.content.pm.ActivityInfo; import android.os.Bundle; import com.elphin.framework.app.mvc.View; /** * 页面抽象接口 * </p> * * @version 1.0 * @author elphin * @date 13-5-26 下午1:44 */ public interface Page extends View { /** * 设置页面tag * @param pageTag 页面tag */ abstract void setPageTag(String pageTag); /** * 获取页面Tag * @return 页面Tag */ abstract String getPageTag(); abstract Task getTask(); /** * 回退操作处理,该方法由框架调用。在 {@link android.app.Activity#onBackPressed()}中调用 * * 如果需要手动操作页面回退,调用 {@link Task#goBack(android.os.Bundle)} 或 {@link Task#goBack()} * @return */ abstract boolean onBackPressed(); /** * 获取页面参数 * @return */ abstract Bundle getPageArguments(); /** * 设置页面参数 */ abstract void setPageArguments(Bundle args); /** * 设置 传递到要回退到的目标页面的参数 * @param args */ abstract void setBackwardArguments(Bundle args); /** * 获取传递到要回退到的目标页面的参数 * @return */ abstract Bundle getBackwardArguments(); /** * 是否是栈回退时进入的该页面 * @return */ abstract boolean isNavigateBack(); /** * 其他页面回退到该页面时的回调 * @param args */ void onBackFromOtherPage(Bundle args); /** * 获取自定义进出动画. * 无动画指定为0. * @return * int[0] - int[3]对应: * <li>[0]进入时, 本Page的进入动画</li> * <li>[1]进入时, 被替换的Page的退出动画</li> * <li>[2]退出时, 替换Page的进入动画</li> * <li>[3]退出时, 本Page的退出动画</li> */ int[] getCustomAnimations(); /** * 指定其它Page back回本Page时, 本Page的进入动画, 是否由{@link #getCustomAnimations()}[2]覆盖. * 如果Page有自己的动画, 不希望其它界面指定动画时, 需要return false, 并重写{@link #getCustomAnimations()}返回动画效果. * @return 默认返回true, 可以覆盖. */ boolean shouldOverrideCustomAnimations(); /** * 获取页面性能统计Tag * @return 该页面性能统计的Tag @see {@link com.elphin.common.statistics.PerformanceMonitorConst.PageTag} */ String getPageLogTag(); /** * 设置该页面下默认的屏幕方向 * @see {@link ActivityInfo#SCREEN_ORIENTATION_PORTRAIT} {@link ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE} * @return */ int getDefaultRequestedOrientation(); /** * 是否指定该页面下默认的屏幕方向 * @return 默认返回false,需要固定该页面下屏幕方向时,返回true,并实现{@link #getDefaultRequestedOrientation} */ boolean shouldOverrideRequestedOrientation(); }