Android 는 전 기 를 표시 하 는 컨트롤 코드 를 실현 합 니 다.
1.디 렉 터 리 구조,본인 은 안 드 로 이 드 를 사용 하여 잃 어 버 렸 습 니 다.
2.실행 인터페이스,입력 상자 에 수 치 를 입력 하고 새로 고침 을 클릭 하면 배터리 에 해당 하 는 전 기 를 표시 합 니 다.
3.사용자 정의 배터리 컨트롤 을 그립 니 다.우선,Battery State 계승 View 를 새로 만 듭 니 다.
private Context mContext;
private float width;
private float height;
private Paint mPaint;
private float powerQuantity=0.5f;//
사용 할 변수
public BatteryState(Context context) {
super(context);
mContext=context;
mPaint = new Paint();
}
public BatteryState(Context context, AttributeSet attrs) {
super(context, attrs);
mContext=context;
mPaint = new Paint();
}
public BatteryState(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext=context;
mPaint = new Paint();
}
세 가지 구조 방법 은 컨트롤 을 사용자 정의 할 때 보통 이 세 가지 구조 방법 을 써 서 layot 에서 사용 하거나 직접 정의 할 수 있 습 니 다.그 중에서 AttributeSet 은 xml 파일 로 이 컨트롤 을 정의 할 때 사용 하 는 속성 집합 입 니 다.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onDraw(Canvas canvas) {
//
super.onDraw(canvas);
Bitmap batteryBitmap=ReadBitMap(mContext, R.drawable.battery_empty);//
width=batteryBitmap.getWidth();
height=batteryBitmap.getHeight();
if (powerQuantity>0.3f&&powerQuantity<=1) {
// 30%
mPaint.setColor(Color.GREEN);
}
else if (powerQuantity>=0&&powerQuantity<=0.3)
{
mPaint.setColor(Color.RED);
}
//
float right=width*0.94f;
float left=width*0.21f+(right-width*0.21f)*(1-powerQuantity);
float tope=height*0.45f;
float bottom=height*0.67f;
canvas.drawRect(left,tope,right,bottom,mPaint);
canvas.drawBitmap(batteryBitmap, 0, 0, mPaint);
}
우리 가 정의 하 는 컨트롤 은 용기 컨트롤 이 아 닌 하나의 컨트롤 이기 때문에 나 는 onMeasure,onDraw 만 다시 써 서 각각 크기 를 계산 하고 화면 을 그립 니 다.배경 그림 에 따라 그 릴 영역 을 계산 합 니 다.
public void refreshPower(float power)
{
powerQuantity=power;
if (powerQuantity>1.0f)
powerQuantity=1.0f;
if (powerQuantity<0)
powerQuantity=0;
invalidate();
}
컨트롤 새로 고침4.xml 파일 에서 정의:
<LinearLayout
android:layout_width="wrap_content"
android:layout_marginLeft="30dp"
android:layout_height="30dp">
<com.example.administrator.batterytest.BatteryState
android:id="@+id/bs_power"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
5、Activity 에서 사용
mBtnTry = (TextView) findViewById(R.id.btn_try);
mBtnTry.setText(" ");
// mBtnTry.setBackground(getResources().getDrawable(R.drawable.maxwell_sun_5_bar));
mBsPower = (BatteryState) findViewById(R.id.bs_power);
mBtnTry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float power = Integer.parseInt(mEtPower.getText().toString());
float p = power / 100;
mBsPower.refreshPower(p);
}
});
본 고 에서 말 한 것 이 당신 에 게 도움 이 되 기 를 바 랍 니 다.안 드 로 이 드 가 전 기 를 표시 하 는 컨트롤 코드 를 실현 하면 여기까지 소개 합 니 다.저희 사 이 트 를 계속 지 켜 봐 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.