public abstract class ParentActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO
}
@Override
public void onClick(View v) {
// TODO
}
}
/**
* 设置ContentView
* @return R.layout.xxx
*/
protected abstract int getLayoutId();
/**
* 初始化View
*/
protected abstract void initView();
/**
* add Listener
*/
protected abstract void setListener();
/**
* 初始化数据
*/
protected abstract void initData();
/**
* view点击
* @param v
*/
public abstract void widgetClick(View v);
public abstract class ParentActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());
initView();
setListener();
initData();
}
@Override
public void onClick(View v) {
if (fastClick())
widgetClick(v);
}
private long lastClick = 0;
private boolean fastClick() {
if (System.currentTimeMillis() - lastClick <= 1000) {
return false;
}
lastClick = System.currentTimeMillis();
return true;
}
}
// 通用title
protected void $setToolBar() {
Toolbar toolbar = $findViewById(R.id.toolbar);
toolbar.setTitle("");
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
// findViewById
public T $findViewById(int resId) {
return (T) findViewById(resId);
}
// Toast
protected void $toast(CharSequence msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
// Toast
protected void $toast(int resId) {
Toast.makeText(this, resId, Toast.LENGTH_SHORT).show();
}
protected boolean isDebug = true;
// Log
protected void $Log(String msg) {
if (isDebug) {
Log.d(this.getClass().getName(), msg);
}
}
// startActivity
protected void $startActivity(Class> cls, Bundle bundle) {
Intent intent = new Intent(this, cls);
if (bundle != null) {
intent.putExtras(bundle);
}
startActivity(intent);
}
// startActivity
protected void $startActivity(Class> cls) {
$startActivity(cls, null);
}
// startActivityForResult
protected void $startActivityForResult(Class> cls, Bundle bundle, int requestCode) {
Intent intent = new Intent(this, cls);
if (bundle != null) {
intent.putExtras(bundle);
}
startActivityForResult(intent, requestCode);
}
// startActivityForResult
protected void $startActivityForResult(Class> cls, int requestCode) {
$startActivityForResult(cls, null, requestCode);
}
// getIntent
protected Bundle $getIntentExtra() {
Intent intent = getIntent();
Bundle bundle = null;
if (null != intent)
bundle = intent.getExtras();
return bundle;
}
源码以及Demo地址:https://github.com/YBill/EncapsulateActivity