package pyp.navigation.association.one;
import pyp.navigation.R;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.HeaderViewListAdapter;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.TextView;
/**
* @Title: SideBar
* @Description: 社团模块-社团列表-自定义滚动条
* @author qsuron
* @date 2014-7-25
* @email admin@qiushurong.cn
*/
public class SideBar extends View {
private char[] l;
private SectionIndexer sectionIndexter = null;
private ListView list;
private TextView mDialogText;
Bitmap mbitmap;
private int type = 1;
// private int color = 0xff858c94;
private int color = 0xff000000;
public SideBar(Context context) {
super(context);
init();
}
public SideBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
/**
* 方法 init 初始化数据 void
*/
private void init() {
l = new char[] { '!', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'P', 'Q', 'R', 'S', 'T', 'W', 'X', 'Y', 'Z', '#' };
mbitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.association_main_scrollbar_search_icon);
}
public SideBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public void setListView(ListView _list) {
list = _list;
HeaderViewListAdapter ha = (HeaderViewListAdapter) _list.getAdapter();
MyListAdapter ad = (MyListAdapter) ha.getWrappedAdapter();
sectionIndexter = (SectionIndexer) ad;
}
public void setTextView(TextView mDialogText) {
this.mDialogText = mDialogText;
}
@SuppressWarnings("deprecation")
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
int i = (int) event.getY();
int idx = i / (getMeasuredHeight() / l.length);
if (idx >= l.length) {
idx = l.length - 1;
} else if (idx < 0) {
idx = 0;
}
if (event.getAction() == MotionEvent.ACTION_DOWN
|| event.getAction() == MotionEvent.ACTION_MOVE) {
setBackgroundResource(R.drawable.association_main_scrollbar_bg);
mDialogText.setVisibility(View.VISIBLE);
if (idx == 0) {
mDialogText.setText("Search");
mDialogText.setTextSize(16);
} else {
mDialogText.setText(String.valueOf(l[idx]));
mDialogText.setTextSize(34);
}
if (sectionIndexter == null) {
sectionIndexter = (SectionIndexer) list.getAdapter();
}
int position = sectionIndexter.getPositionForSection(l[idx]);
if (position == -1) {
return true;
}
list.setSelection(position);
} else {
mDialogText.setVisibility(View.INVISIBLE);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
setBackgroundDrawable(new ColorDrawable(0x00000000));
}
return true;
}
@SuppressLint("DrawAllocation")
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
paint.setTypeface(font);
paint.setColor(color);
paint.setTextSize(12);
paint.setStyle(Style.FILL);
paint.setTextAlign(Paint.Align.CENTER);
float widthCenter = getMeasuredWidth() / 2;
if (l.length > 0) {
float height = getMeasuredHeight() / l.length;
for (int i = 0; i < l.length; i++) {
if (i == 0 && type != 2) {
canvas.drawBitmap(mbitmap, widthCenter - 7, (i + 1)
* height - height / 2, paint);
} else
canvas.drawText(String.valueOf(l[i]), widthCenter, (i + 1)
* height, paint);
}
}
this.invalidate();
super.onDraw(canvas);
}
}