解决方案 »
- android怎么样在两个activity中传递控件对象
- Android SDK JNI部分源码(c,c++)在哪?
- 高分求解:在Android4.0下实现API抓图功能?
- 想做一个类似于个人相册的android程序,各位大牛给个指点。
- SimpleCursorAdapter中setViewImage的参数问题
- 编译Android系统 使用隐藏Api
- camera切换到Record模式就挂~~急救
- 与C#服务端网络通信的问题!
- 关于线程的问题,希望高手给分析一下
- Android studio 中如何把类(.java)中的整型变量传入到布局文件(.xml)中
- 怎样构造一个view对象?
- ListView不能刷新,原有的数据不更新,只更新新增的数据的问题
package com.qiao.tiebatime.model;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.Region;
import android.util.AttributeSet;
import android.widget.ImageView;//圆形头像
public class CircleImageView extends ImageView { Path path;
public PaintFlagsDrawFilter mPaintFlagsDrawFilter;// 毛边过滤
Paint paint; public CircleImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init();
} public CircleImageView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init();
} public CircleImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
} public void init() {
mPaintFlagsDrawFilter = new PaintFlagsDrawFilter(0,
Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setColor(Color.WHITE); } @Override
protected void onDraw(Canvas cns) {
// TODO Auto-generated method stub
float h = getMeasuredHeight() - 3.0f;
float w = getMeasuredWidth() - 3.0f;
if (path == null) {
path = new Path();
path.addCircle(w / 2.0f, h / 2.0f,
(float) Math.min(w / 2.0f, (h / 2.0)), Path.Direction.CCW);
path.close();
}
cns.drawCircle(w / 2.0f, h / 2.0f, Math.min(w / 2.0f, h / 2.0f) + 1.5f,
paint);
int saveCount = cns.getSaveCount();
cns.save();
cns.setDrawFilter(mPaintFlagsDrawFilter);
cns.clipPath(path, Region.Op.REPLACE);
cns.setDrawFilter(mPaintFlagsDrawFilter);
cns.drawColor(Color.WHITE);
super.onDraw(cns);
cns.restoreToCount(saveCount);
}}
获取帖子列表适配器
package com.qiao.tiebatime.model;import java.util.List;
import java.util.Map;import com.qiao.tiebatime.R;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;//获取帖子列表适配器
public class AdapterListViewPostList extends BaseAdapter { private List<Map<String, Object>> listItems;
private LayoutInflater listContainer; // 视图容器 public final class ListItemView { // 自定义控件集合 public TextView tv2, tv3, tv4, tv5;
// public com.qiao.tiebatime.model.CircleImageView circleImageView;
} public AdapterListViewPostList(Context context,
List<Map<String, Object>> listItems) {
listContainer = LayoutInflater.from(context); // 创建视图容器并设置上下文
this.listItems = listItems;
} public int getCount() {
// TODO Auto-generated method stub
return listItems.size();
} public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
} public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
} /**
* ListView Item设置
*/
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
// 自定义视图
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
// 获取list_item布局文件的视图
convertView = listContainer.inflate(R.layout.list_item_post, null);
// 获取控件对象 // listItemView.circleImageView =
// (com.qiao.tiebatime.model.CircleImageView) convertView
// .findViewById(R.id.imageView1); listItemView.tv2 = (TextView) convertView
.findViewById(R.id.lip_textview2);
listItemView.tv3 = (TextView) convertView
.findViewById(R.id.lip_textview3);
listItemView.tv4 = (TextView) convertView
.findViewById(R.id.lip_textview4);
listItemView.tv5 = (TextView) convertView
.findViewById(R.id.lip_textview5); // 设置控件集到convertView
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
} // 设置文字和图片
// listItemView.circleImageView.setImageResource((Integer)
// listItems.get(
// position).get(R.drawable.icon));
listItemView.tv2
.setText((String) listItems.get(position).get("yonghu"));
listItemView.tv3.setText((String) listItems.get(position)
.get("shijian"));
listItemView.tv4
.setText((String) listItems.get(position).get("biaoti"));
listItemView.tv5
.setText((String) listItems.get(position).get("detail")); return convertView;
}
}
圆型图片做一次就好,保存成bitmap或 Drawable,下次直接画。2.做圆的方法也不好,锯齿太大。
onDraw的Canvas是从上层传下来的,如果你不剪裁显示区域的话,可能就会出现你运行时看到情况。
楼主可以试试