package org.zywx.wbpalmstar.engine; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.content.LocalBroadcastManager; import android.util.TypedValue; import android.view.Gravity; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; import org.zywx.wbpalmstar.base.util.ConfigXmlUtil; import org.zywx.wbpalmstar.engine.external.Compat; import org.zywx.wbpalmstar.engine.universalex.EUExUtil; import java.lang.ref.WeakReference; /** * Created by yanlongtao on 2015/4/21 0021. * * LoadingActivity 里面不要做AppCan 配置相关的操作, * * 原因:历史问题,推送,暴露给三方的入口等都是EBrowserActivity * */ public class LoadingActivity extends Activity { public static final String FINISH_BROADCAST_ACTION = "com.appcan.close"; public static final String KEY_INTENT_ROOT_PAGE_DATA = "root_page_data"; private static final int MSG_GET_WIDGET_DATA=100; private FrameLayout mRootLayout; private BroadcastReceiver mBroadcastReceiver; private Handler mHandler; private boolean isTemp = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mHandler=new LoadingHandler(this); handleIntent(); initRootView(); ConfigXmlUtil.setStatusBarColorWithAddView(this, Color.TRANSPARENT); setContentView(mRootLayout); registerFinishReceiver(); addDevelopInfo(); hideMenu(); if (!isTemp) { startEngine(); } } private void handleIntent() { try { Intent intent = getIntent(); if (intent != null) { isTemp = intent.getBooleanExtra("isTemp", false); } } catch (Exception exception) { } } private void initRootView() { mRootLayout = new FrameLayout(this); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); mRootLayout.setLayoutParams(layoutParams); } private void addDevelopInfo() { if (EBrowserActivity.develop) { TextView worn = new TextView(this); worn.setText(getResources().getIdentifier("platform_only_test","string",getPackageName())); worn.setTextColor(0xffff0000); worn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); FrameLayout.LayoutParams wornPa = new FrameLayout.LayoutParams( Compat.FILL, Compat.WRAP); wornPa.gravity = Gravity.TOP; wornPa.leftMargin = 10; wornPa.topMargin = 60; worn.setLayoutParams(wornPa); mRootLayout.addView(worn); } } @Override public void onBackPressed() { } @Override protected void onDestroy() { super.onDestroy(); LocalBroadcastManager.getInstance(this).unregisterReceiver( mBroadcastReceiver); } private class FinishSelfReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { finish(); overridePendingTransition(EUExUtil.getResAnimID("platform_myspace_fade_in_anim") , EUExUtil.getResAnimID("platform_myspace_fade_out_anim")); } } private void registerFinishReceiver() { mBroadcastReceiver = new FinishSelfReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(FINISH_BROADCAST_ACTION); LocalBroadcastManager.getInstance(this).registerReceiver( mBroadcastReceiver, intentFilter); } /** * 解决三星S6显示空菜单问题 */ private void hideMenu() { try { getWindow().clearFlags( WindowManager.LayoutParams.class.getField( "FLAG_NEEDS_MENU_KEY").getInt(null)); } catch (Exception e) { } } private void startEngine() { AppCan.getInstance().start(LoadingActivity.this,AppCan.getInstance().getRootWidgetData(),getIntent().getExtras()); } private static class LoadingHandler extends Handler{ private final WeakReference<LoadingActivity> mActivity; LoadingHandler(LoadingActivity activity){ mActivity=new WeakReference<LoadingActivity>(activity); } @Override public void handleMessage(Message msg) { switch (msg.what){ case MSG_GET_WIDGET_DATA: break; default: super.handleMessage(msg); } } } }