Horizontal---ProgressBar

相当简单,直接贴

先看主界面布局activity_custom_progress_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:gravity="center">

	<Button android:text="自定义颜色进度条" android:id="@+id/color"
		android:layout_width="wrap_content" android:layout_height="wrap_content" />
	<Button android:text="自左向右的进度条" android:id="@+id/left"
		android:layout_width="wrap_content" android:layout_height="wrap_content" />

</LinearLayout>

ProgressBarMain

package com.example.progressdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ProgressBarMain extends Activity implements OnClickListener {

	/**
	 * 按钮点击进入自定义颜色的进度条页面
	 */
	private Button color;

	/**
	 * 按钮点击进入左方向进度条页面
	 */
	private Button left;

	/**
	 * 按钮点击进入右方向进度条页面
	 */
	private Button right;

	/**
	 * 按钮点击进入不定进度条页面
	 */
	private Button indeter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_custom_progress_main);

		initProperty();
	}

	private void initProperty() {
		color = (Button) findViewById(R.id.color);
		left = (Button) findViewById(R.id.left);

		color.setOnClickListener(this);
		left.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.color:
			startActivity(new Intent(this, ProgressBar_Color.class));
			break;
		case R.id.left:
			startActivity(new Intent(this, ProgressBar_Left.class));
			break;
		default:
			break;
		}
	}

}

接下来看ProgressBar_Color

package com.example.progressdemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;

public class ProgressBar_Color extends Activity {

	private ProgressBar mColor = null;

	private int mCount = 0;

	private final int HANDLER_LEFT = 1;
	private Handler mHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			if (msg.what == HANDLER_LEFT) {
				finish();
			}
			super.handleMessage(msg);
		}
	};

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_custom_progress_mypage_color);

		showIndeterDialog();
	}

	private void showIndeterDialog() {
		mCount = 0;

		mColor = (ProgressBar) findViewById(R.id.progress_horizontal_color);
		mColor.setMax(100);
		mColor.setProgress(0);
		//)就是滚动条的当前值自动在最小到最大值之间来回移动,形成这样一个动画效果,这个只是告诉别人“我正在工作”,但不能提示工作进度到哪个阶段
		mColor.setIndeterminate(false);
		new Thread() {
			public void run() {
				try {
					while (mCount <= 100) {
						mColor.setProgress(mCount++);
						Thread.sleep(100);
					}
					if (mCount > 100) {
						mHandler.sendEmptyMessage(HANDLER_LEFT);
					}
				} catch (Exception ex) {
				}
			}
		}.start();
	}
}

看activity_custom_progress_mypage_color.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progress_horizontal_color"
        style="@style/progressBarHorizontal_color"
        android:layout_width="200dip"
        android:layout_height="10dip"
        android:max="100"
        android:progress="41" />
</LinearLayout>

styles.xml

 <style name="progressBarHorizontal_color" parent="android:Widget.ProgressBar.Horizontal">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@drawable/progress_color_horizontal</item>
        <item name="android:minHeight">5dip</item>
        <item name="android:maxHeight">5dip</item>
    </style>

接下来看drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!--
         最下边层
    	angle表示方向角度,0为从左向又,然后逆时针转,90时候表示从下往上
    -->
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />

            <gradient
                android:angle="90"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:startColor="#ff9d9e9d" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />

                <gradient
                    android:angle="90"
                    android:centerColor="#ffBBFFBB"
                    android:centerY="0.75"
                    android:endColor="#ff00DB00"
                    android:startColor="#ff00DB00" />
            </shape>
        </clip>
    </item>

</layer-list>

----------------------------------------------第一个效果实现了,下面是同样效果的第二种方法----------------------------------------------------

  <style name="progressBarHorizontal" parent="android:Widget.ProgressBar.Horizontal">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@drawable/progress_horizontal</item>
        <item name="android:minHeight">5dip</item>
        <item name="android:maxHeight">5dip</item>
    </style>

接下来看drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/progressbar_back">
    </item>
    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/progressbar_indeter1">
    </item>

</layer-list>
时间: 2024-10-30 01:39:08

Horizontal---ProgressBar的相关文章

Android的ProgressBar进度条-android学习之旅(三十一)

ProgressBar 简介 ProgressBar是一种很常用的Ui,用于给复杂的操作显示进度,提供更好的用户相应.使用setProgress()incrementProgressBy()来设置进度和显示进度的增加或减少,正数表示增加,负数表示减少. ProgressBar的风格 ProgressBar 代码示例 布局代码 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns

Android 如何在 ListView 中更新 ProgressBar 进度

=======================ListView原理============================== Android 的 ListView 的原理打个简单的比喻就是: 演员演小品(假设演员都长一样,每个角色任何演员都可以演) 小品剧也不会为每个角色都招募一个演员.ListView 不会为每一个 Item 创建 View 对象. 小品剧的演员在一个角色表演完成后,会在后台换下一个角色的服装,等待需要表演的时候再出场. ListView 会让未显示的 View 填充数据后缓

安卓学习————安卓控件之ProgressBar

ProgressBar ProgressBar,进度条,是AndroidUI界面中一个非常实用的组件,通常用于向用户显示某个耗时操作完成的百分比.因此它需要动态的显示进度,从而避免长时间的执行某个耗时的操作,而让用户感觉程序失去了相应,从而提高界面的友好性. 从官方文档上看,为了适应不同的应用环境,Android内置了几种风格的进度条,可以通过Style属性设置ProgressBar的风格.支持如下属性,后面在示例中会一一展示: @android:style/Widget.ProgressBar

ProgressBar三种style

一.普通的ProgressBar显示如图 <ProgressBar        android:id="@+id/pbNormal"        android:layout_width="match_parent"        android:layout_height="wrap_content"        /> 二.有进度的ProgressBar xml:设置style,Horizontal <ProgressB

android 安卓 listview 支持下拉刷新 上拉加载更多

[1]重写listView import java.text.SimpleDateFormat; import java.util.Date; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGrou

仿腾讯新闻,点击屏幕重新加载的实现,直接贴代码

<pre class="java" name="code">package com.example.clicktoreload; import com.example.clicktoreload.ClickScreenToReload.Reload; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.M

自定义ProgressDialog加载图片

使用系统加载框 mDialog = new ProgressDialog(this); mDialog.setCancelable(true);//是否可以被取消 mDialog.setMessage("loading...");//加载显示的信息 mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//圆环风格 mDialog.show(); 更换系统加载图片 mDialog = new ProgressDialog(this

10.下拉刷新、加载更多、标记已读、轮播条、缓存

下拉刷新.加载更多.标记已读.轮播条.缓存 下拉刷新------- 1.addHeaderView必须在setAdapter之前调用 2.将paddingTop设置一个headerView高度的负值去隐藏它 getHeight()和getMeasuredHeight()的区别: getMeasuredHeight():获取测量完的高度,只要在onMeasure方法执行完,就可以用 它获取到宽高,在自定义控件内部多使用这个 使用view.measure(0,0)方法可以主动通知系统去测量,然后就

ListView上拉加载下拉刷新

主要用到了这个几个文件,MainActivity是界面的Activity,MyAdapter是ListView的自定义适配,MyListView是自定义带头部LIistView,如果只需要上拉加载就不需要:activity_main.xml是住界面,item.xml是ListView的子布局里面只有一个TextView,listview_footer.xml是listview的加载更多的底部布局,listview_header.xml是listview的头部布局. MainActivity.ja

android listView 滑动载入数据 该数据是服务端获取的

package com.sunway.works.applycash; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import com.sunway.works.R; import com.sunway.works.applycash.ApplyCashListActivity; impo