Index: platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
diff --git a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
index ba5407984b8864a5c93145cd3c098a6ff2bc1ebf..6c080bd214b1ddef7decab0d36ab78a5d17fdc2c 100644 |
--- a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
+++ b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
@@ -8,9 +8,11 @@ import android.view.View; |
import android.view.ViewGroup; |
import android.widget.AdapterView; |
import android.widget.BaseAdapter; |
+import android.widget.CompoundButton; |
import android.widget.EditText; |
import android.widget.LinearLayout; |
import android.widget.Spinner; |
+import android.widget.Switch; |
import android.widget.TextView; |
import org.json.JSONArray; |
@@ -30,18 +32,21 @@ import java.util.ArrayList; |
Within that LinearLayout, we maintain views ourselves so we can efficiently update its children. |
*/ |
public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelectedListener { |
- static final String NAME = "name"; |
- static final String VALUE = "value"; |
- static final String OPTIONS = "options"; |
+ private static final String NAME = "name"; |
+ private static final String VALUE = "value"; |
+ private static final String OPTIONS = "options"; |
private static final String BACKEND_STATE_NAME = "Backend"; |
+ private static final String FPS_STATE_NAME = "FPS"; |
private static final int FILTER_LENGTH = 20; |
- ViewerActivity mViewerActivity; |
- LinearLayout mLayout; |
- JSONArray mStateJson; |
+ private ViewerActivity mViewerActivity; |
+ private LinearLayout mLayout; |
+ private JSONArray mStateJson; |
+ private TextView mFPSFloatText; |
public StateAdapter(ViewerActivity viewerActivity) { |
mViewerActivity = viewerActivity; |
+ mFPSFloatText = (TextView) viewerActivity.findViewById(R.id.fpsFloatText); |
try { |
mStateJson = new JSONArray("[{\"name\": \"Please\", " + |
"\"value\": \"Initialize\", \"options\": []}]"); |
@@ -63,9 +68,11 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec |
} |
} |
+ // The first list item is the mLayout that contains a list of state items |
+ // The second list item is the toggle for float FPS |
@Override |
public int getCount() { |
- return 1; |
+ return 2; |
} |
@Override |
@@ -80,21 +87,47 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec |
@Override |
public View getView(int position, View convertView, ViewGroup parent) { |
- if (mLayout == null) { |
- mLayout = new LinearLayout(mViewerActivity); |
- mLayout.setOrientation(LinearLayout.VERTICAL); |
- updateDrawer(); |
+ switch (position) { |
+ case 0: { |
+ if (mLayout == null) { |
+ mLayout = new LinearLayout(mViewerActivity); |
+ mLayout.setOrientation(LinearLayout.VERTICAL); |
+ updateDrawer(); |
+ } |
+ return mLayout; |
+ } |
+ case 1: { |
+ View view = LayoutInflater.from(mViewerActivity).inflate(R.layout.fps_toggle, null); |
+ Switch theSwitch = (Switch) view.findViewById(R.id.theSwitch); |
+ theSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ |
+ @Override |
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
+ mFPSFloatText.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE); |
+ } |
+ }); |
+ return view; |
+ } |
+ default: { |
+ return null; |
+ } |
} |
- return mLayout; |
} |
private View inflateItemView(JSONObject item) throws JSONException { |
- LinearLayout itemView = (LinearLayout) LayoutInflater.from(mViewerActivity).inflate(R.layout.state_item, null); |
+ LinearLayout itemView = (LinearLayout) |
+ LayoutInflater.from(mViewerActivity).inflate(R.layout.state_item, null); |
TextView nameText = (TextView) itemView.findViewById(R.id.nameText); |
TextView valueText = (TextView) itemView.findViewById(R.id.valueText); |
Spinner optionSpinner = (Spinner) itemView.findViewById(R.id.optionSpinner); |
nameText.setText(item.getString(NAME)); |
String value = item.getString(VALUE); |
+ |
+ if (nameText.getText().equals(FPS_STATE_NAME) && mFPSFloatText != null) { |
+ mFPSFloatText.setText(value); |
+ // Don't show FPS in the drawer. We'll show it in the float text. |
+ itemView.setVisibility(View.GONE); |
+ } |
+ |
JSONArray options = item.getJSONArray(OPTIONS); |
if (options.length() == 0) { |
valueText.setText(value); |