package moontime.droid;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.TextView;
public class InfiniteSlider extends Gallery {
private TypedArray _styleAttributes;
public InfiniteSlider(Context context, AttributeSet attrs) {
super(context, attrs);
_styleAttributes = context.obtainStyledAttributes(attrs, R.styleable.InfiniteSlider);
}
public void init(InfiniteAdapter adapter) {
setAdapter(adapter);
adapter.initAttributes(_styleAttributes);
}
public static abstract class InfiniteAdapter extends BaseAdapter {
public static final int COUNT = Integer.MAX_VALUE;
public static final int MID_POSITION = COUNT / 2;
private final Context _context;
private final ColorStateList _sliderItemColors;
private int _textSize;
public InfiniteAdapter(Context context) {
_context = context;
_sliderItemColors = context.getResources().getColorStateList(R.color.calendar_slider_item);
}
public void initAttributes(TypedArray styleAttributes) {
_textSize = styleAttributes.getInt(R.styleable.InfiniteSlider_text_size, 30);
}
@Override
public int getCount() {
return COUNT;
}
@Override
public abstract String getItem(int position);
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(_context);
textView.setText(getItem(position));
textView.setTextSize(_textSize);
textView.setTextColor(_sliderItemColors);
return textView;
}
}
}