您的位置:首页 > 其它

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

2017-05-26 10:38 771 查看
代码如下:

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();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐