1. 程式人生 > >Android做一個顯示電量的小控制元件

Android做一個顯示電量的小控制元件

1、目錄結構,本人是使用安卓死丟丟。


2、執行介面,輸入框中輸入數值,點選重新整理,會再電池中顯示出相應的電量


3、繪製自定義電池控制元件,首先,新建一個類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();
}
三個構造方法,自定義控制元件的時候一般會把這三個構造方法寫出來,便於在layout中使用或者直接定義,其中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);
    }
由於我們定義的控制元件時一個單個控制元件,不是容器控制元件,所以我只重寫了onMeasureonDraw分別用來計算大小和繪製介面,根據背景圖片來計算要繪製的區域
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);
            }
        });

原始碼 http://download.csdn.net/detail/y280903468/9480079





相關推薦

Android一個顯示電量控制元件

1、目錄結構,本人是使用安卓死丟丟。 2、執行介面,輸入框中輸入數值,點選重新整理,會再電池中顯示出相應的電量 3、繪製自定義電池控制元件,首先,新建一個類BatteryState繼承View private Context mContext; private fl

android-一個簡單的左滑刪除控制元件

import android.animation.ValueAnimator; import android.content.Context; import android.graphics.PointF; import android.support.v4.view.ViewConfigurat

Android介面實現】資訊更新紅點顯示——自定義控制元件BadgeView的使用介紹

在現在大部分的資訊釋出類應用,都有這樣的一個功能:當後臺資料更新,比如有系統訊息或者是使用者間有互動的時候,通過在控制元件上顯示一個小紅點來提示使用者有新的資訊。一般來說,這種業務需求,我們可以在佈局檔案中隱藏一個小紅點,然後當檢測到有資料更新的時候,我們將隱藏的小紅點顯示

寫的一個UGUI下Image控制元件序列幀動畫的工具

unity2D使用序列幀做動畫,一般都用2d SpriteRenderer,它的好處是能夠沿用圖片原有的大小和錨點。特別是我們使用TexturePacker打圖集的時候並且Trim邊緣空白的時候,可以直接使用它,而不用在程式中調整它的位置等資訊。 然而我們如果

androidの桌面控制元件(1)—電池狀態顯示

桌面小控制元件的實現是基於Broadcast的形式實現的,因此,每一個桌面小控制元件都對應於一個BroadcastReceiver類。Android系統提供了一個AppWidgetProvider類(它就是BroadcastReceiver的子類),這個類很關鍵,你在寫桌面小控制元件時只需繼承這個類就行。

微信程式實現顯示和隱藏控制元件-頭像-取值-bindblur事件

微信小程式實現顯示和隱藏控制元件 .wxml: <view class=" {{showOrHidden?'show':'hidden'}}"></view> .wxss: .hidden { display: none; } .show { display: b

Android控制元件

1.ToggleButton 通過一個帶有亮度指示同時預設文字為“ON”(TextOn)或“OFF”(TextOff)的按鈕顯示選中/未選中狀態。 在java程式碼中:  ToggleButton tb_main_tb1 = (ToggleButton) findViewB

android popupwindow從下彈出,顯示在某控制元件上方

popupwindow彈出時從下往上,隱藏時從上往下,並且顯示在指定控制元件上方View inflate = LayoutInflater.from(getContext()).inflate(R.layout.popupwindow_shop, null);

Android 顯示全文摺疊控制元件

轉載請註明來源! 一般列表裡文字太多的一個摺疊效果的空間,效果圖如下。 當文字超過設定的行數後就摺疊,小於設定行數不顯示展開按鈕。下面上程式碼。 先看佈局檔案: <?xml version="1.0" encoding="utf-8

qt 控制元件之textEdit

獲取 textedit 的文字內容:QString text = ui->textEdit->toPlainText(); 設定textedit 的文字內容:ui->textEdit->append(“lkf”);此方法追加內容是換行追加 char b[10]

Android自定義View--翻書控制元件(一)

0.前言 最近重看了一遍封神演義,感覺QQ閱讀那個翻書的效果挺好的,準備做一個。上週五下午用了兩個小時只寫了一部分功能,以後有時間再完善 1.分析 先看效果圖 這個空間,說簡單也簡單,說難也難,簡單就在於這個效果主要就是依賴canvas的clippath才見到部分canvas,難就難在裁

Android 彈出框LemonBubble提示控制元件

簡介:這是一個完全Made in China的炫酷彈出指示層Android版本(-_-#意思就是還有iOS的),他能讓你快速的自定義任何樣式的彈出框 最新更新記錄: 捕捉了LemonBubble.forceHide()中的空指標異常,保證開發者在onDestroy

android開發:自定義組合控制元件

內容介紹 本文記錄,自定義組合控制元件,為了可以程式碼複用,減少程式碼量 配置控制元件屬性檔案 開啟res/values/目錄下的arss.xml檔案,新增下面屬性程式碼,如果沒有建立arrs.xml檔案。 <?xml version="1.0" enc

android 多功能自定義畫板控制元件(用於解決特定需求)

在專案中需要做一個可以自定義軌跡,但始終只有一條線,並且支援撤銷(撤銷單位為MotionEvent的down事件到up事件),還要支援動畫預覽等功能,最重要的是能夠按照間隔畫素來獲取所有點的座標,用於專案的其他功能。 整體的思路 1.專案中的應用場景需要畫板是一個圓形的,這個好實現用canv

Android PreferenceActivity新增Button、Textview控制元件

因為PreferenceActivity載入的layout是以PreferenceScreen為底的,所以沒辦法在layout裡面直接新增TextView之類的控制元件。 此時可以把PreferenceScreen當做一個listview,放在另一個layout中: 1. PreferenceScreen

Android : 事件分發,以及消除子控制元件和父控制元件互相的影響

效果圖 消除在上下滑的時候讓下面的listview控制元件不進行滑動 如題,先上xml的程式碼 父控制元件listview <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.Con

Android [Camera 原始碼] 元資料和控制元件(Metadata and Controls) Google官方文件(四)

Google原始碼網地址連結:https://source.android.com/devices/camera 該Google Camera的文件為系列文章,文章列表: overview Camera3 HAL Subsystem Metadata and Con

VS程式設計,編輯WPF過程中,點選設計器中介面某一控制元件,在XAML中高亮突出顯示相應的控制元件程式碼的設定方法。

在編輯製件WPF過程中,當介面中控制元件較多時,可通過點選設計器中具體的控制元件,從而中在xaml程式碼視窗中快速跳轉到對應的部分。為了突出顯示該部分控制元件程式碼的名稱,方便視覺上直觀的觀察到被選中的控制元件對應的XAML程式碼,可以在VS中設定:選中控制元件後,高亮顯示對應的XAML

一個好看的時間控制元件

Android 一個好看的時間控制元件 1.依賴包 compile 'com.wx.wheelview:wheelview:1.3.3' 2.在佈局中使用 <LinearLayout android:layout_width="60dp

一個立體的按鈕 控制元件模板

<!--操作裝置按鍵模板-->         <ControlTemplate x:Key="ButtonControlTemplate1" TargetType="{x:Type Button}">             <Grid>