您的位置:首页 > 移动开发 > Android开发

Android学习指南之十一:ProgressBar、SeekBar和RatingBar

2012-07-01 22:58 489 查看
上一讲中介绍了xml中添加:

package android.basic.lesson11;   
      
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.view.Window;   
      
    public class MainHelloProgressBar extends Activity {   
        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
          //在标题条里放置进度条。请求窗口特色风格,这里设置成不明确的进度风格   
          requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);   
          setContentView(R.layout.main);   
          //设置标题栏中的不明确的进度条是否可以显示,当你需要表示处理中的时候设置为True,处理完毕后设置为false   
          setProgressBarIndeterminateVisibility(true);   
        }   
    }

下面试main.xml中的代码,大家注意黑体字部分的内容,看看不同样式的不同的表现:

package android.basic.lesson11;   
      
    import android.app.Activity;   
      
    import android.os.Bundle;   
      
    import android.view.Window;   
      
    public class MainHelloProgressBar extends Activity {   
      
    /** Called when the activity is first created. */  
      
    @Override  
      
    public void onCreate(Bundle savedInstanceState) {   
      
    super.onCreate(savedInstanceState);   
      
    //设置窗口进度条特性风格   
      
    requestWindowFeature(Window.FEATURE_PROGRESS);   
      
    setContentView(R.layout.main);   
      
    //设置进度条可见性   
      
    setProgressBarVisibility(true);   
      
    //设置进度条进度值,要乘以100的   
      
    setProgress(60*100);   
      
    setSecondaryProgress(80*100);   
    }   
      
    }
运行效果:

同学们可以使用下面的代码对,进度条进行一些操作练习:

private ProgressBar pb; //定义ProgressBar
pb = (ProgressBar) findViewById(R.id.ProgressBar01);
pb.incrementProgressBy(5); //ProgressBar进度值增加5
pb.incrementProgressBy(-5); //ProgressBar进度值减少5
pb.incrementSecondaryProgressBy(5); //ProgressBar第二个进度条 进度值增加5
pb.incrementSecondaryProgressBy(-5); //ProgressBar第二个进度条 进度值减少5

二、SeekBar拖动条(滑动条)

SeekBar可以作为音乐播放器的进度指示和调整工具,音量调整工具等,SeekBar是ProgressBar的一个子类,下面我们用一个可以改变并显示当前进度的拖动条例子来演示一下它的使用:

1、main.xml

< ?xml version="1.0" encoding="utf-8"?>

2、java:

package android.basic.lesson11;   
      
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.widget.SeekBar;   
    import android.widget.SeekBar.OnSeekBarChangeListener;   
    import android.widget.TextView;   
    import android.widget.Toast;   
      
    public class MainHelloSeekBar extends Activity {   
            /** Called when the activity is first created. */  
            @Override  
            public void onCreate(Bundle savedInstanceState) {   
                    super.onCreate(savedInstanceState);   
                    setContentView(R.layout.main);   
      
                    //找到拖动条和文本框   
                    final SeekBar sb = (SeekBar) findViewById(R.id.SeekBar01);   
                    final TextView tv1 = (TextView) findViewById(R.id.TextView01);   
      
                    //设置拖动条的初始值和文本框的初始值   
                    sb.setMax(100);   
                    sb.setProgress(30);   
                    tv1.setText("当前进度:" + sb.getProgress());   
      
                    //设置拖动条改变监听器   
                    OnSeekBarChangeListener osbcl = new OnSeekBarChangeListener() {   
      
                            @Override  
                            public void onProgressChanged(SeekBar seekBar, int progress,   
                                            boolean fromUser) {   
                                    tv1.setText("当前进度:" + sb.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();   
                            }   
      
                    };   
      
                    //为拖动条绑定监听器   
                    sb.setOnSeekBarChangeListener(osbcl);   
      
            }   
    }
3、运行程序:


三、RatingBar评分条

RatingBar评分条是SeekBar拖动条的子类。现阶段系统自带了3种样式,我们同样用例子来演示他的使用方法和属性设置:

1、main.xml的代码:

package android.basic.lesson11;   
      
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.widget.RatingBar;   
    import android.widget.RatingBar.OnRatingBarChangeListener;   
      
    public class MainHelloRatingBar extends Activity {   
        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.main);   
      
            //定义组件对象   
            final RatingBar rb1 = (RatingBar)findViewById(R.id.RatingBar01);   
            final RatingBar rb2 = (RatingBar)findViewById(R.id.RatingBar02);   
            final RatingBar rb3 = (RatingBar)findViewById(R.id.RatingBar03);   
      
            //定义评分监听器   
            OnRatingBarChangeListener orbcl= new OnRatingBarChangeListener(){   
      
                            @Override  
                            public void onRatingChanged(RatingBar ratingBar, float rating,   
                                            boolean fromUser) {   
                                                    switch(ratingBar.getId()){   
                                                    case R.id.RatingBar01:   
                                                            //把第一个评分条的值取出来设置给其他评分条   
                                                            rb2.setRating(rb1.getRating());   
                                                            rb3.setRating(rb1.getRating()*2);//十颗星所以乘以2   
                                                            break;   
                                                    case R.id.RatingBar02:   
                                                            rb1.setRating(rb2.getRating());   
                                                            rb3.setRating(rb2.getRating()*2);   
                                                            break;   
                                                    case R.id.RatingBar03:   
                                                            rb1.setRating(rb3.getRating()/2);   
                                                            rb2.setRating(rb3.getRating()/2);   
                                                            break;   
                                    }   
                            }   
            } ;   
      
            //绑定监听器   
            rb1.setOnRatingBarChangeListener(orbcl);   
            rb2.setOnRatingBarChangeListener(orbcl);   
            rb3.setOnRatingBarChangeListener(orbcl);   
        }   
    }
3、运行程序,点击评分条看看效果,使用左右键再试试

有兴趣的同学可以研究一下,如何更换评分条中的图片,譬如罢星星换成花朵什么的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: