
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" tools:context=".MainActivity" android:background="#d5ebfa" > <ProgressBar android:id="@+id/pb" android:layout_width="150dp" android:layout_height="150dp" style="@android:style/Widget.ProgressBar.Horizontal" android:progressDrawable="@drawable/progressbar_states" android:layout_centerInParent="true" /> <TextView android:id="@+id/tv_percentage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25dp" android:textColor="#000" android:layout_centerInParent="true" /> <TextView android:id="@+id/tv_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" /> </RelativeLayout> |
in drawable create once xml file to percentage in style
progressbar_states.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape android:shape="oval"> <stroke android:width="5dp" android:color="#d0d4d7" /> <solid android:color="#eef2f5"/> </shape> </item> <item android:id="@android:id/progress"> <clip android:clipOrientation="vertical" android:gravity="bottom"> <shape android:shape="oval"> <stroke android:width="5dp" android:color="#ff0001" /> <gradient android:startColor="#7fc97c" android:endColor="#99f396" android:centerColor="#89e386" android:angle="270" android:gradientRadius="50" android:centerY=".50" /> </shape> </clip> </item> </layer-list> |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
package com.androindian.battery; import androidx.appcompat.app.AppCompatActivity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Bundle; import android.view.Window; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Context mContext; private TextView mTextViewInfo; private TextView mTextViewPercentage; private ProgressBar mProgressBar; private int mProgressStatus = 0; private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE,-1); mTextViewInfo.setText("Battery Scale : " + scale); int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1); mTextViewInfo.setText(mTextViewInfo.getText() + "\nBattery Level : " + level); float percentage = level/ (float) scale; mProgressStatus = (int)((percentage)*100); mTextViewPercentage.setText("" + mProgressStatus + "%"); mTextViewInfo.setText(mTextViewInfo.getText() + "\nPercentage : "+ mProgressStatus + "%"); mProgressBar.setProgress(mProgressStatus); } }; @Override protected void onCreate(Bundle savedInstanceState) { // Request window feature action bar requestWindowFeature(Window.FEATURE_ACTION_BAR); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the application context mContext = getApplicationContext(); IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); mContext.registerReceiver(mBroadcastReceiver,iFilter); mTextViewInfo = (TextView) findViewById(R.id.tv_info); mTextViewPercentage = (TextView) findViewById(R.id.tv_percentage); mProgressBar = (ProgressBar) findViewById(R.id.pb); } } |
output