10.4G信号控件走一个吧
4G信号控件走一个吧,继续摸鱼
做最左边那个
上几个图吧
前面的文章直接绘制图片的了
也是根据状态绘制图片即可
没有卡的,有卡的,显示信号
但是在绘制文字的时候要注意,baseline
是文字的底部。
在构造方法里知道尺寸
public SignalView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
options = new BitmapFactory.Options();
options.inScaled = false;
//获取到图片的长宽
textPaint = new Paint();
textPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
textPaint.setStyle(Paint.Style.STROKE);
textPaint.setColor(getResources().getColor(R.color.white));
textPaint.setTextSize(12.0f);
noSimCarPic = BitmapFactory.decodeResource(getResources(), R.mipmap.top_no_sim_card, options);
targetHeight = noSimCarPic.getHeight();
width = noSimCarPic.getWidth();
retestSize();
//绘制图片的画笔
picPaint = new Paint();
picPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
initPicRes();
}
提取一个resize
private void retestSize() {
textWidth = textPaint.measureText(showText);
totalWidth = (int) (textWidth + width);
ICLogger.d("textWidth == > " + textWidth + " totalWidth == > " + totalWidth);
}
当信号变化从有信号变成无卡的蚨,要重新测量,否则宽度太大了。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(totalWidth, targetHeight);
}
绘制的话是两部分
@Override
protected void onDraw(Canvas canvas) {
if (!TextUtils.isEmpty(showText)) {
canvas.drawText(showText, totalWidth - textWidth,
targetHeight / 2, textPaint);
}
if (bitmap == null) {
return;
}
//判断状态
canvas.drawBitmap(bitmap, 0, 0, picPaint);
}
对外暴露的有:
- void noNetwork() 没有网络,显示noSimCard的图标
- void updateNetworkType(String text)更新网络文字类型,比如说4G,3G之类的
- void updateLev(int lev)更新网络信号强度
okay了,以上的知识就可以做出那个图标了。