rAndroid(11):进度条ProgressBar/SeekBar/RatingBar

  1. Android中的进度条:
    这里写图片描述
  2. 第一排的是ProgressBar,他们风格不同而已,第二排的三和四是ProgressBar的子类
    这里写图片描述
  3. 在xml文件中设置ProgressBar的属性
<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="horizontal" >
<ProgressBar 
    android:id="@+id/progressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:progress="100"
    android:secondaryProgress="150"
    style="?android:attr/progressBarStyleHorizontal"
    />
<Button
    android:id="@+id/firstProgress_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="增加第一进度">
</Button>
<Button
    android:id="@+id/secondProgress_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="增加第二进度">
</Button>
</LinearLayout>
  1. 在代码中设置ProgressBar的属性
package com.borqs.firstpj;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.ProgressBar;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class MainActivity extends ActionBarActivity {
    ProgressBar mProgressBar;
    Button mFirstProgress;
    Button mSecondProgress;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mProgressBar = (ProgressBar)findViewById(R.id.progressBar);
        mFirstProgress = (Button)findViewById(R.id.firstProgress_btn);
        mSecondProgress = (Button)findViewById(R.id.secondProgress_btn);
        //设置进度条的最大值
//      mProgressBar.setMax(300);
        //设置进度条的当前进度
        mProgressBar.setProgress(100);
        //设置进度条的第二进度值
        mProgressBar.setSecondaryProgress(150);

        //是否是明确的方法,如果ProgressBar是明确的返回false,如果ProgressBar是不明确的返回ture
        boolean flag = mProgressBar.isIndeterminate();

        ProgressButtonListener listener = new ProgressButtonListener();
        mFirstProgress.setOnClickListener(listener);

        SecondProgressButtonListener l = new SecondProgressButtonListener();
        mSecondProgress.setOnClickListener(l);
    }

    class ProgressButtonListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            mProgressBar.incrementProgressBy(10);
        }
    }

    class SecondProgressButtonListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            mProgressBar.incrementSecondaryProgressBy(20);
        }
    }
}

这里写图片描述


SeekBar

<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= "horizontal">
    <SeekBar 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar"/>
</LinearLayout>
public class MainActivity extends ActionBarActivity {
    private SeekBar mSeekBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSeekBar = (SeekBar)findViewById(R.id.seekBar);
        mSeekBar.setProgress(10);
        mSeekBar.setSecondaryProgress(50);
        onChangeListener listener = new onChangeListener();
        mSeekBar.setOnSeekBarChangeListener(listener);
    }
    class onChangeListener implements OnSeekBarChangeListener{
        /**
         * seekBar:指的是触发了监听器的Seekbar对象
         * progress:当前进度
         * fromUser:这次的变化是不是有用户引起的,如果是用户拖拽导致的SeekBar的变化是true
         */
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            System.out.println("seekBar:" + seekBar + ",progress:" + progress + ",fromUser:" + fromUser);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            System.out.println("start");
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            System.out.println("stop");
        }
    }

RatingBar

<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= "horizontal">
    <RatingBar 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ratingBar"/>
    <Button
        android:id="@+id/btn"
        android:text="button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

    private RatingBar mRatingBar;
    private Button mButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRatingBar = (RatingBar)findViewById(R.id.ratingBar);
        mButton = (Button)findViewById(R.id.btn);
        //总共5颗星
        mRatingBar.setNumStars(5);
        //一次前进一颗星
        mRatingBar.setStepSize(1);
        //监听步进变化
        RatingBarChangedListener listener = new RatingBarChangedListener();
        mRatingBar.setOnRatingBarChangeListener(listener);

        //测试button改变ratingbar步进值,fromUser为false.
        buttonClickChangedListener l = new buttonClickChangedListener();
        mButton.setOnClickListener(l);
    }
    class RatingBarChangedListener implements OnRatingBarChangeListener{
        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating,
                boolean fromUser) {
            System.out.println("rating:" + rating + ",fromUser:" + fromUser);
        }
    }
    class buttonClickChangedListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            mRatingBar.setRating(mRatingBar.getRating() + 2.0f);
        }
    }

结果:当使用button改变ratingBar步进值时fromUser为false.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值