80,350
社区成员
发帖
与我相关
我的任务
分享
public class TestListActivity extends ListActivity {
private ArrayList<QueueItem> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getIntent().getExtras();
list = (ArrayList<QueueItem>) b.getSerializable("list");
MyAdapter adapter = new MyAdapter(this);
setListAdapter(adapter);
}
public final class ViewHolder{
//public TextView title;
public MyImageView img;
}
public class MyAdapter extends BaseAdapter{
private LayoutInflater mInflater;
private Context mContext;
public MyAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
mContext = context;
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
if(position>list.size())
return null;
else
return list.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.image_view, null);
holder.img = (MyImageView)convertView.findViewById(R.id.image);
convertView.setTag(holder);
}else {
holder = (ViewHolder)convertView.getTag();
}
holder.img.setImageResource(R.drawable.backgroud);
holder.img.setQueueItem(list.get(position));
//holder.img.postInvalidate();
convertView.setTag(holder);
return convertView;
}
}
}
public class MyImageView extends ImageView {
private Paint paint ;
private QueueItem queue;
private int floor=0;
private int ceil=0;
private int height = 0;
private int width = 0;
private Path path;
private float scale=0;
public MyImageView(Context context, AttributeSet attrs) {
super(context,attrs);
}
public void setQueueItem(QueueItem queue){
this.queue = queue;
floor = queue.getFloor();
ceil = queue.getCeil();
DisplayMetrics dm=new DisplayMetrics();
dm = this.getContext().getApplicationContext().getResources().getDisplayMetrics();
width=dm.widthPixels;
height=dm.heightPixels;
scale = (float)(ceil-floor)/height;
Log.d("floor+ceil", Integer.toString(floor)+"+"+Integer.toString(ceil));
Log.d("width+height", Integer.toString(width)+"+"+Integer.toString(height));
initContextView();
//buildPath();
//postInvalidate();
}
private void initContextView(){
setBackgroundColor(Color.WHITE);
path = new Path();
paint = new Paint();
paint.setColor(Color.rgb(24, 142, 198));
paint.setStrokeWidth(2);
paint.setStyle(Style.FILL);
}
private void buildPath(){
path.moveTo(0, ceil);
Iterator<Integer> iterator = queue.getX().iterator();
int i = 4;//x轴
int y=0;
while(iterator.hasNext()){
Integer temp = iterator.next();
y = (int)(temp*scale);
y = ceil-y;
path.lineTo(i, y);
//Log.d("i="+i, Integer.toString(y));
i+=4;
}
//Log.d("i="+i, Integer.toString(y));
path.lineTo(i, ceil);
}
@Override
protected void onDraw(Canvas canvas) {
buildPath();
Log.d("onDraw", Integer.toString(this.floor));
canvas.drawPath(path, paint);
}
}