package com.bob.digcsdn; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.LinearLayout; import android.widget.Toast; import com.bob.digcsdn.R; /** * Created by Bob on 15/10/12. */ public class BaseActivity extends AppCompatActivity { private LinearLayout rootLayout; private boolean useCustomToolbar; private int toolbarId; public Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 这句很关键,注意是调用父类的方法 super.setContentView(R.layout.activity_base); // 经测试在代码里直接声明透明状态栏更有效 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes(); localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags); } } private void initToolbar() { mToolbar = (Toolbar) findViewById(R.id.toolbar); if (mToolbar != null) { setSupportActionBar(mToolbar); } } private void initToolbar(int toolbarId) { mToolbar = (Toolbar) findViewById(toolbarId); if (mToolbar != null) { setSupportActionBar(mToolbar); } } /** * 当自带的toolbar的布局(LinearLayout vertical)结构或有特殊样式达不到activity要求时使用。 * * @param layoutId * @param useCustomToolbar * @param toolbarId */ public void setContentView(int layoutId, boolean useCustomToolbar, int toolbarId) { this.useCustomToolbar = useCustomToolbar; this.toolbarId = toolbarId; setContentView(layoutId); } /** * 如果直接使用这个方法,说明useCustomToolbar为false, * * @param layoutId */ @Override public void setContentView(int layoutId) { setContentView(View.inflate(this, layoutId, null)); } @Override public void setContentView(View view) { rootLayout = (LinearLayout) findViewById(R.id.root_layout); if (rootLayout == null) return; if (useCustomToolbar) { rootLayout.removeAllViews();//remove the default toolbar in rootLayout rootLayout.addView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); initToolbar(toolbarId); } else { rootLayout.addView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); initToolbar(); } } /** * 移除默认的toolbar,这里适合在不使用toolbar的环境下使用(或者有其他的替代品) */ protected void removeDefaultToolbar() { rootLayout.removeViewAt(0); } protected void hideSoftInputForce(View v) { // ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0);//隐藏软键盘 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN ); } protected void showSoftInputForce() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);//弹出软键盘 } protected void showToast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } protected void showToast(int stringId) { showToast(getResources().getString(stringId)); } protected void skipActivity(Class<?> dest) { Intent intent = new Intent(this, dest); startActivity(intent); } }