|
本帖最后由 ddsony 于 2014-9-11 14:31 编辑
强大的VC++应该支持自定义控件,是不是可以自定义开发一个增强型的输入框,继承于输入框。有【背景颜色】属性,而且支持左右两边不同背景颜色动态变化。
下面是度娘搜到的有人用java写的带进度条背景的输入框EditText代码,不知对c++有无借鉴意义:
package com.lookup;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.EditText;
public class ExtEditText extends EditText {
private String tag = "ExtEditText";
private Handler handler;
private Paint paint = null;
private int process = 0;
public ExtEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
}
public ExtEditText(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public ExtEditText(Context context) {
super(context);
initView();
}
private void initView() {
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
process = msg.what;
Log.d(tag, "process :" + process);
return true;
}
});
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int height = getMeasuredHeight();
int width = getMeasuredWidth();
if (process < 100) {
paint.setColor(Color.GREEN);
paint.setAlpha(100);
canvas.drawRect(0, 0, process * width / 100, height, paint);
} else {
paint.setAlpha(0);
canvas.drawRect(0, 0, width, height, paint);
}
invalidate();
};
/**
*
* @param process
* 0 -100 之间的数值
*/
public void updateProcess(int process) {
handler.sendEmptyMessageDelayed(process, 1000);
}
}
|
|