package com.sqisland.android.graphics_demo;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import java.util.List;
public abstract class SpinnerImageActivity extends Activity {
protected ImageView imageView;
private int lastSelection = 0;
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner_image);
imageView = (ImageView) findViewById(R.id.image);
Bitmap original = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
final List<Option> options = getOptions(original);
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<Option> adapter = new ArrayAdapter<Option>(
this, android.R.layout.simple_spinner_item, options);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Option option = options.get(position);
imageView.setImageBitmap(option.bitmap);
if (position != 0) {
lastSelection = position;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinner.setSelection(getInitialSelection(options.size()));
lastSelection = spinner.getSelectedItemPosition();
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (spinner.getSelectedItemPosition() == 0) {
spinner.setSelection(lastSelection);
} else {
spinner.setSelection(0);
}
}
});
}
protected abstract List<Option> getOptions(Bitmap original);
protected int getInitialSelection(int size) {
return 1;
}
protected static class Option {
public final String title;
public final Bitmap bitmap;
public Option(String title, Bitmap bitmap) {
this.title = title;
this.bitmap = bitmap;
}
@Override
public String toString() {
return title;
}
}
}