Horizontal progress bar, progress bar
Some time has not come to write, next I will continue to share the level progress bar written by this girl, hope to help beginners ~~~
MainActivityClass
Package com. lanzx. customprogressbar;
Import android. app. Activity;
Import android. OS. Bundle;
Import android. OS. Handler;
Import android. OS. Message;
Import android. view. Menu;
Import android. view. MenuItem;
Import android. widget. TextView;
Public class
MainActivityExtends Activity {
Private TextView textnumber;
Private int num;
Private int progress = 0;
Private Message message;
CustomProgressBar bar;
Private Handler handler = new Handler (){
@ Override
Public void handleMessage (Message msg ){
Super. handleMessage (msg );
Int p = msg. what;
// MPbar. setProgress (p );
Bar. setProgress (p );
}
};
@ Override
Protected void onCreate (Bundle savedInstanceState ){
Super. onCreate (savedInstanceState );
SetContentView (R. layout. activity_main );
Textnumber = (TextView) findViewById (R. id. textnumber );
Num = (int) (Math. random () * 100 );
Textnumber. setText (String. valueOf (num + "/100"). toString ());
// Get the custom progress bar
Bar = (CustomProgressBar) findViewById (R. id. item_progress_SeekBar );
// Set the maximum value of the progress bar
Bar. setMax (100 );
// Set the progress Value
Bar. setProgress (60 );
// Enable the thread
New Thread (yuanlirunnable). start ();
}
Runnable yuanlirunnable = new Runnable (){
@ Override
Public void run (){
Message = handler. obtainMessage ();
Try {
For (int I = 0; I <= 100; I ++ ){
/*
* Control the progress here
*/
// Int x = ++ progress;
// Int randomnumberprogress = (int) (Math. random () * 100 );
// Int x = randomnumberprogress;
Int x = num;
Message. what = x;
Handler. sendEmptyMessage (message. what );
Thread. sleep (100 );
}
} Catch (InterruptedException e ){
E. printStackTrace ();
}
}
};
@ Override
Public boolean onCreateOptionsMenu (Menu menu ){
GetMenuInflater (). inflate (R. menu. main, menu );
Return true;
}
@ Override
Public boolean onOptionsItemSelected (MenuItem item ){
Int id = item. getItemId ();
If (id = R. id. action_settings ){
Return true;
}
Return super. onOptionsItemSelected (item );
}
}
CustomProgressBar class
Package com. lanzx. customprogressbar;
Import android. content. Context;
Import android. graphics. drawable. shapes. RoundRectShape;
Import android. graphics. drawable. shapes. Shape;
Import android. util. AttributeSet;
Import android. widget. ProgressBar;
Public class CustomProgressBar extends ProgressBar {
Public CustomProgressBar (Context context ){
Super (context );
}
Public CustomProgressBar (Context context, AttributeSet attrs ){
This (context, attrs, 0 );
}
Public CustomProgressBar (Context context, AttributeSet attrs, int defStyle ){
This (context, attrs, defStyle, 0 );
}
Public CustomProgressBar (Context context, AttributeSet attrs, int defStyle, int styleRes ){
Super (context, attrs, defStyle );
}
@ Override
Protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec ){
Super. onMeasure (widthMeasureSpec, heightMeasureSpec );
}
// Circle angle of the progress bar
Public final int roundCorners = 15;
Shape getDrawableShape (){
Final float [] roundedCorners = new float [] {0, 0, 0, 0, 0, 0, 0 };
For (int I = 0; I <roundedCorners. length; I ++ ){
RoundedCorners [I] = dp2px (getContext (), roundCorners );
}
Return new RoundRectShape (roundedCorners, null, null );
}
/** Convert dp to px */
Public static float dp2px (Context context, float dp ){
Final float scale = context. getResources (). getDisplayMetrics (). density;
Return dp * scale;
}
}
Activity_main.xml Layout
<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: background = "@ android: color/black"
Android: paddingBottom = "@ dimen/activity_vertical_margin"
Android: paddingLeft = "@ dimen/activity_horizontal_margin"
Android: paddingRight = "@ dimen/activity_horizontal_margin"
Android: paddingTop = "@ dimen/activity_vertical_margin"
Tools: context = "com. lanzx. customprogressbar. MainActivity">
<Com. lanzx. customprogressbar. CustomProgressBar
Android: id = "@ + id/item_progress_SeekBar"
Style = "? Android: attr/progressBarStyleHorizontal"
Android: layout_width = "fill_parent"
Android: layout_height = "30dp"
Android: layout_marginLeft = "30dp"
Android: layout_marginRight = "30dp"
Android: layout_marginTop = "100dp"
Android: indeterminateOnly = "false"
Android: max = "100"
Android: progress = "60"
Android: progressDrawable = "@ drawable/progressbar_drawable"
Android: visibility = "visible"/>
<TextView
Android: id = "@ + id/textnumber"
Android: layout_width = "wrap_content"
Android: layout_height = "20dip"
Android: layout_alignBottom = "@ + id/item_progress_SeekBar"
Android: layout_alignRight = "@ + id/item_progress_SeekBar"
Android: layout_marginBottom = "40dp"
Android: text = "/100"
Android: textColor = "# FFFFFF"
Android: textSize = "15dip"/>
</RelativeLayout>
Progressbar_drawable.xml(In the drawable file)
<? 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>
<Corners
Android: bottomLeftRadius = "15dp"
Android: bottomRightRadius = "15dp"
Android: topLeftRadius = "15dp"
Android: topRightRadius = "15dp"/>
<Solid android: color = "# C9C7C7"/> <! -- # Bfbfbf the color of the progress bar -->
<Stroke
Android: dashWidth = "2dip"
Android: width = "2dip"
Android: color = "#79E911"/> <! -- Stroke -->
</Shape>
</Item>
<! -- Fill progress color -->
<Item
Android: id = "@ android: id/progress"
Android: drawable = "@ drawable/red">
</Item>
</Layer-list>
Main. xml (in the menu file)
<Menu xmlns: android = "http://schemas.android.com/apk/res/android"
Xmlns: tools = "http://schemas.android.com/tools"
Tools: context = "com. lanzx. customprogressbar. MainActivity">
<Item
Android: id = "@ + id/action_settings"
Android: orderInCategory = "100"
Android: showAsAction = "never"
Android: title = "@ string/action_settings"/>
</Menu>
As follows:
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.