package cn.androidy.thinking; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.example.android.common.activities.SampleActivityBase; import java.util.ArrayList; public abstract class DemoDetailBaseActivity extends SampleActivityBase implements View.OnClickListener { protected FloatingActionButton mFloatingActionButton; protected ArrayList<Integer> mFloatingActionButtonImageResIdList; protected int mCurrentColorIndex = 0; protected ActionBar mActionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); mActionBar = getSupportActionBar(); mActionBar.setDisplayHomeAsUpEnabled(true); initFloatingFloatingActionButton(); } protected abstract int getLayoutId(); protected abstract int getFloatingActionButtonId(); protected void initFloatingFloatingActionButton() { mFloatingActionButton = (FloatingActionButton) findViewById(getFloatingActionButtonId()); if (mFloatingActionButton == null) { return; } mFloatingActionButton.setOnClickListener(this); mFloatingActionButtonImageResIdList = new ArrayList<Integer>(); mFloatingActionButtonImageResIdList.add(R.drawable.ic_favorite_border_white_48dp); mFloatingActionButtonImageResIdList.add(R.drawable.ic_favorite_white_48dp); mFloatingActionButton.setImageResource(mFloatingActionButtonImageResIdList.get(mCurrentColorIndex)); mCurrentColorIndex = (mCurrentColorIndex + 1) % mFloatingActionButtonImageResIdList.size(); } protected void onFloatingActionButtonClicked() { mFloatingActionButton.setImageResource(mFloatingActionButtonImageResIdList.get(mCurrentColorIndex)); mCurrentColorIndex = (mCurrentColorIndex + 1) % mFloatingActionButtonImageResIdList.size(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_demo_detail_base, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onClick(View v) { int id = v.getId(); if (id == getFloatingActionButtonId()) { onFloatingActionButtonClicked(); return; } } }