一个成功的创业者,三个因素,眼光、胸怀和实力。
本讲内容: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