国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)顯示電量的控件代碼

2019-12-12 05:00:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

下面介紹了Android實(shí)現(xiàn)顯示電量的控件代碼,具體代碼如下:

1、目錄結(jié)構(gòu),本人是使用安卓死丟丟。


2、運(yùn)行界面,輸入框中輸入數(shù)值,點(diǎn)擊刷新,會(huì)再電池中顯示出相應(yīng)的電量

3、繪制自定義電池控件,首先,新建一個(gè)類BatteryState繼承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(); } 

三個(gè)構(gòu)造方法,自定義控件的時(shí)候一般會(huì)把這三個(gè)構(gòu)造方法寫出來(lái),便于在layout中使用或者直接定義,其中AttributeSet是當(dāng)使用xml文件定義該控件時(shí)引用的屬性集

@Override   protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //    計(jì)算控件尺寸     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);     } //    計(jì)算繪制電量的區(qū)域     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);   } 

由于我們定義的控件時(shí)一個(gè)單個(gè)控件,不是容器控件,所以我只重寫了onMeasure、onDraw分別用來(lái)計(jì)算大小和繪制界面,根據(jù)背景圖片來(lái)計(jì)算要繪制的區(qū)域

  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);       }     }); 

希望本文所述對(duì)你有所幫助,Android實(shí)現(xiàn)顯示電量的控件代碼就給大家介紹到這里了。希望大家繼續(xù)關(guān)注我們的網(wǎng)站!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 内江市| 崇左市| 鄂托克前旗| 辽宁省| 桂林市| 泰和县| 安多县| 贵溪市| 华安县| 尼木县| 抚顺县| 河北省| 新巴尔虎右旗| 荆州市| 饶平县| 凤山市| 伊吾县| 双鸭山市| 仁化县| 普定县| 会同县| 五台县| 黄骅市| 伊宁县| 射阳县| 安塞县| 安陆市| 阜平县| 通江县| 凯里市| 田阳县| 樟树市| 六枝特区| 梅州市| 中宁县| 永城市| 武乡县| 韩城市| 北流市| 三河市| 潍坊市|