用户界面View之ProgressBar

一个成功的创业者,三个因素,眼光、胸怀和实力。


本讲内容:ProgressBar 进度条

作用:在某项延续性工作的进展过程中为了不让用户觉得程序死掉了,需要有个活动的进度条,表示此过程正在进行中。Android中使用ProgressBar来实现这一功能:

ProgressBar 的2个子类分别为SeekBar 拖动条 滑动条和RatingBar 评分条


示例一

  

          点击按钮前                        点击按钮后

下面是res/layout/activity_main.xml 布局文件:

<LinearLayout 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:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBarId01"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/progressBarId02"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="30"
        android:secondaryProgress="80" />
    
    <Button 
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:gravity="center"
        android:text="Button"/>

</LinearLayout>

注意:ProgressBar的样式(默认是圆形)   

style=”?android:attr/progressBarStyleLarge”   大圆圈      

style=”?android:attr/progressBarStyleSmall”    小圆圈

style=”?android:attr/progressBarStyleSmallTitle”   标题条的样式    

style="?android:attr/progressBarStyleHorizontal"  水平风格

ndroid:max=”100″     最大刻度按100算      android:progress=”30″     第一进度是30  

android:secondaryProgress=”80″     第二进度是80


下面是MainActivity主界面文件:

public class MainActivity extends Activity {
	private Button b;
	private ProgressBar progressBar;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);

		b = (Button) findViewById(R.id.btn);
		progressBar = (ProgressBar) findViewById(R.id.progressBarId01);

		b.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				if(progressBar.getVisibility()==View.GONE){
					progressBar.setVisibility(View.VISIBLE);
				}else{
					progressBar.setVisibility(View.GONE);
				}
			}
		});
	}

}
Android所有控件的可见属性,可以通过android:visibility进行指定,可选值有三种,visible、invisible和gone。 visible

表示控件是可见的(这个值是默认值),invisible表示控件是不可见的,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态,gone表示控件不仅不可见,而且不再占用任何屏幕空间,我们还可以通过代码来设置控件的可见性,使用setVisibility()方法,可以传入View.VISIBLE、View.INVISIBLE和View.GONE三种值。

例二SeekBar 拖动条 滑动条的应用:(SeekBar可以作为音乐播放器的进度指示和调整工具,音量调整工具等)


下面是res/layout/activity_main.xml 布局文件:

<span style="font-size:18px;"><LinearLayout 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:orientation="vertical"
    tools:context="com.example.text.MainActivity$PlaceholderFragment" >
    <SeekBar 
        android:id="@+id/seekBarId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    <TextView 
        android:id="@+id/textViewId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp"/>
    
</LinearLayout>
</span>

下面是MainActivity主界面文件:

<span style="font-size:18px;">public class MainActivity extends Activity {
	private SeekBar seekBar;
	private TextView textView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		seekBar=(SeekBar) findViewById(R.id.seekBarId);
		textView=(TextView) findViewById(R.id.textViewId);
		
		//设置拖动条的初始值和文本框的初始值
		seekBar.setMax(100);
		seekBar.setProgress(30);
		seekBar.setSecondaryProgress(80);
		textView.setText("当前进度:" + seekBar.getProgress());
		
		//设置拖动条改变监听器
		OnSeekBarChangeListener osbcl = new OnSeekBarChangeListener() {
			@Override
			//改变时执行该方法
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				textView.setText("当前进度:" + seekBar.getProgress());
				Toast.makeText(getApplicationContext(), "onProgressChanged",
						Toast.LENGTH_SHORT).show();
			}
			//开始时执行该方法
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				Toast.makeText(getApplicationContext(), "onStartTrackingTouch",
						Toast.LENGTH_SHORT).show();
			}
			//结束时执行该方法
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				Toast.makeText(getApplicationContext(), "onStopTrackingTouch",
						Toast.LENGTH_SHORT).show();
			}
		};
		//为拖动条绑定监听器
		seekBar.setOnSeekBarChangeListener(osbcl);
	}
}</span>


例三RatingBar评分条的应用:

RatingBar评分条现阶段系统自带了3种样式,下面来演示他的使用方法和属性设置


下面是res/layout/activity_main.xml 布局文件:

<span style="font-size:18px;"><LinearLayout 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:orientation="vertical"
    tools:context="com.example.text.MainActivity$PlaceholderFragment" >
    
    <RatingBar 
        android:id="@+id/ratingBarId01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:stepSize="1"
        android:rating="2"
        android:layout_marginTop="20dp"/>
    <RatingBar 
        android:id="@+id/ratingBarId02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="4"
        android:rating="3"
        android:isIndicator="false"
        style="?android:attr/ratingBarStyleIndicator" 
        android:layout_marginTop="20dp"/>
    <RatingBar 
        android:id="@+id/ratingBarId03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="10"
        android:rating="5"
        android:isIndicator="false"
        style="?android:attr/ratingBarStyleSmall"  
        android:layout_marginTop="20dp"/>
    
</LinearLayout>
</span>
注意:
<span style="font-size:18px;">android:stepSize="1" 设置每次前进多少个星(默认是0.5)</span>
<span style="font-size:18px;">android:isIndicator="false"    默认值是TRUE,会导致不可操作<pre name="code" class="java" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;">android:rating="2" 默认分值设为2      android:numStars="10" 星星数量设为10(默认是5)</span>
<span style="font-size:18px;">style="?android:attr/ratingBarStyleIndicator" 指示器(Indicator)样式</span>

 

下面是MainActivity主界面文件:

<span style="font-size:18px;">public class MainActivity extends Activity {
	private RatingBar ratingBar01;
	private RatingBar ratingBar02;
	private RatingBar ratingBar03;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ratingBar01 = (RatingBar) findViewById(R.id.ratingBarId01);
		ratingBar02 = (RatingBar) findViewById(R.id.ratingBarId02);
		ratingBar03 = (RatingBar) findViewById(R.id.ratingBarId03);

		// 定义评分监听器
		OnRatingBarChangeListener orbcl = new OnRatingBarChangeListener() {
			@Override
			public void onRatingChanged(RatingBar ratingBar, float rating,
					boolean fromUser) {
				switch (ratingBar.getId()) {
				case R.id.ratingBarId01:
					// 把第一个评分条的值取出来设置给其他评分条
					ratingBar02.setRating(ratingBar01.getRating());
					ratingBar03.setRating(ratingBar01.getRating() * 2);// 十颗星所以乘以2
					break;
				case R.id.ratingBarId02:
					ratingBar01.setRating(ratingBar02.getRating());
					ratingBar03.setRating(ratingBar02.getRating() * 2);
					break;
				case R.id.ratingBarId03:
					ratingBar01.setRating(ratingBar03.getRating() / 2);
					ratingBar02.setRating(ratingBar03.getRating() / 2);
					break;
				}
			}
		};
		// 绑定监听器
		ratingBar01.setOnRatingBarChangeListener(orbcl);
		ratingBar02.setOnRatingBarChangeListener(orbcl);
		ratingBar03.setOnRatingBarChangeListener(orbcl);
	}
}
</span>


Take some time and enjoy it


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值