类似京东筛选 点击小按钮打对勾,没有点击取消


代码如下:

package widgets;



import com.sensu.automall.R;
import com.sensu.automall.utils.MassageUtils;


import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetricsInt;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.GradientDrawable;
import android.util.AttributeSet;
import android.view.View;


public class SelectFPView extends View{


private Resources mResources;
private Paint mBitPaint;
private Paint mTextPaint;
private Bitmap mBitmap;
private GradientDrawable mDrawable;

public SelectFPView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
 mResources = getResources();  
 initBitmap();  
     initPaint(); 
}



    public SelectFPView(Context context) {
    super(context);
    mResources = getResources();  
initBitmap();  
   initPaint(); 
}




private void initPaint() {  
        mBitPaint = new Paint(Paint.ANTI_ALIAS_FLAG);  
        mBitPaint.setFilterBitmap(true);  
        mBitPaint.setDither(true);  
    mBitPaint.setTextSize(MassageUtils.dip2px(14));
    mTextPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
    mTextPaint.setFilterBitmap(true);  
    mTextPaint.setDither(true);  
    mTextPaint.setTextSize(MassageUtils.dip2px(14));
   
    }  
    private void initBitmap() {  
    BitmapDrawable    mBitmapDrawable  = ((BitmapDrawable) (mResources.getDrawable(R.drawable.sift_select))); 
    mBitmap=mBitmapDrawable.getBitmap();
    }  
    
    
    private boolean IsDrawBitmap;
    
    
public boolean isIsDrawBitmap() {
return IsDrawBitmap;
}




public void setIsDrawBitmap(boolean isDrawBitmap) {
IsDrawBitmap = isDrawBitmap;
}




@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(!IsDrawBitmap){
setBackgroundDrawable(getResources().getDrawable(R.drawable.invoice_onselect));
mTextPaint.setTextAlign(Paint.Align.CENTER);  
Paint.FontMetrics fontMetrics = mBitPaint.getFontMetrics();  
       float top = fontMetrics.top;//为基线到字体上边框的距离,
       float bottom = fontMetrics.bottom;//为基线到字体下边框的距离,
       int baseLineY = (int) (getHeight()/2 - top/2 - bottom/2);//基线中间点的y轴计算公式  
       canvas.drawText(text, getWidth()/2,baseLineY, mTextPaint);
}else{
setBackgroundDrawable(getResources().getDrawable(R.drawable.invoice_select));
mBitPaint.setTextAlign(Paint.Align.LEFT);  
canvas.drawBitmap(mBitmap, MassageUtils.dip2px(10), this.getHeight()/2-mBitmap.getHeight()/2, mBitPaint);
mBitPaint.setColor(Color.RED);
FontMetricsInt fontMetrics = mBitPaint.getFontMetricsInt();  
  int baseline = (this.getHeight() - fontMetrics.bottom - fontMetrics.top) / 2;  
   canvas.drawText(text, MassageUtils.dip2px(15)+mBitmap.getWidth(),baseline, mBitPaint);
}

 
}


private String text="";
private int fontWidth;
private int fontHeight;
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
Rect rect = new Rect();
mBitPaint.getTextBounds(text,0,text.length(), rect);
fontWidth = rect.width()+mBitmap.getWidth();
fontHeight=rect.height();
setMeasuredDimension(fontWidth+ MassageUtils.dip2px(25),
mBitmap.getHeight()+ MassageUtils.dip2px(20));
}



public void setText(String txt){
this.text=txt;
}



}



使用

selectFPView.setText(flowModel.getStr());
selectFPView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int j = 0; j < views.size(); j++) {
((SelectFPView) views.get(j)).setIsDrawBitmap(false);
}
if(selectFPView.isIsDrawBitmap()){
selectFPView.setIsDrawBitmap(false);

}else{
if(itemtxtOnclick!=null){
itemtxtOnclick.txtOnClick(pos);
}
selectFPView.setIsDrawBitmap(true);
}
selectFPView.invalidate();
}
});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值