ProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据。它的用 法也非常简单,修改 activity_main.xml中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
……
<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 重新运行程序,会看到屏幕中有一个圆形进度条正在旋转,如图 3.11所示。
第一行代码——Android
102
图 3.11
这时你可能会问,旋转的进度条表明我们的程序正在加载数据,那数据总会有加载完的 时候吧,如何才能让进度条在数据加载完成时消失呢?这里我们就需要用到一个新的知识 点,Android控件的可见属性。所有的Android控件都具有这个属性,可以通过android:visibility 进行指定,可选值有三种,visible、invisible 和 gone。visible 表示控件是可见的,这个值是 默认值,不指定 android:visibility时,控件都是可见的。invisible表示控件不可见,但是它仍 然占据着原来的位置和大小,可以理解成控件变成透明状态了。gone则表示控件不仅不可见, 而且不再占用任何屏幕空间。我们还可以通过代码来设置控件的可见性,使用的是 setVisibility()方法,可以传入 View.VISIBLE、View.INVISIBLE和 View.GONE三种值。 接下来我们就来尝试实现,点击一下按钮让进度条消失,再点击一下按钮让进度条出现 的这种效果。修改 MainActivity中的代码,如下所示:
public class MainActivity extends Activity implements OnClickListener { private Button button; private EditText editText; private ImageView imageView;
第 3章 软件也要拼脸蛋,UI开发的点点滴滴
103
private ProgressBar progressBar;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); editText = (EditText) findViewById(R.id.edit_text); imageView = (ImageView) findViewById(R.id.image_view); progressBar = (ProgressBar) findViewById(R.id.progress_bar); button.setOnClickListener(this); }
@Override public void onClick(View v) { switch (v.getId()) { case R.id.button: if (progressBar.getVisibility() == View.GONE) { progressBar.setVisibility(View.VISIBLE); } else { progressBar.setVisibility(View.GONE); } break; default: break; } }
} 在按钮的点击事件中,我们通过 getVisibility()方法来判断 ProgressBar 是否可见,如果 可见就将 ProgressBar隐藏掉,如果不可见就将 ProgressBar显示出来。重新运行程序,然后 不断地点击按钮,你就会看到进度条会在显示与隐藏之间来回切换。 另外,我们还可以给 ProgressBar指定不同的样式,刚刚是圆形进度条,通过 style属性 可以将它指定成水平进度条,修改 activity_main.xml中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
第一行代码——Android
104
……
<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100" /> </LinearLayout> 指定成水平进度条后,我们还可以通过 android:max 属性给进度条设置一个最大值,然 后在代码中动态地更改进度条的进度。修改 MainActivity中的代码,如下所示:
public class MainActivity extends Activity implements OnClickListener { …… @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: int progress = progressBar.getProgress(); progress = progress + 10; progressBar.setProgress(progress); break; default: break; } } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
……
<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 重新运行程序,会看到屏幕中有一个圆形进度条正在旋转,如图 3.11所示。
第一行代码——Android
102
图 3.11
这时你可能会问,旋转的进度条表明我们的程序正在加载数据,那数据总会有加载完的 时候吧,如何才能让进度条在数据加载完成时消失呢?这里我们就需要用到一个新的知识 点,Android控件的可见属性。所有的Android控件都具有这个属性,可以通过android:visibility 进行指定,可选值有三种,visible、invisible 和 gone。visible 表示控件是可见的,这个值是 默认值,不指定 android:visibility时,控件都是可见的。invisible表示控件不可见,但是它仍 然占据着原来的位置和大小,可以理解成控件变成透明状态了。gone则表示控件不仅不可见, 而且不再占用任何屏幕空间。我们还可以通过代码来设置控件的可见性,使用的是 setVisibility()方法,可以传入 View.VISIBLE、View.INVISIBLE和 View.GONE三种值。 接下来我们就来尝试实现,点击一下按钮让进度条消失,再点击一下按钮让进度条出现 的这种效果。修改 MainActivity中的代码,如下所示:
public class MainActivity extends Activity implements OnClickListener { private Button button; private EditText editText; private ImageView imageView;
第 3章 软件也要拼脸蛋,UI开发的点点滴滴
103
private ProgressBar progressBar;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); editText = (EditText) findViewById(R.id.edit_text); imageView = (ImageView) findViewById(R.id.image_view); progressBar = (ProgressBar) findViewById(R.id.progress_bar); button.setOnClickListener(this); }
@Override public void onClick(View v) { switch (v.getId()) { case R.id.button: if (progressBar.getVisibility() == View.GONE) { progressBar.setVisibility(View.VISIBLE); } else { progressBar.setVisibility(View.GONE); } break; default: break; } }
} 在按钮的点击事件中,我们通过 getVisibility()方法来判断 ProgressBar 是否可见,如果 可见就将 ProgressBar隐藏掉,如果不可见就将 ProgressBar显示出来。重新运行程序,然后 不断地点击按钮,你就会看到进度条会在显示与隐藏之间来回切换。 另外,我们还可以给 ProgressBar指定不同的样式,刚刚是圆形进度条,通过 style属性 可以将它指定成水平进度条,修改 activity_main.xml中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
第一行代码——Android
104
……
<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100" /> </LinearLayout> 指定成水平进度条后,我们还可以通过 android:max 属性给进度条设置一个最大值,然 后在代码中动态地更改进度条的进度。修改 MainActivity中的代码,如下所示:
public class MainActivity extends Activity implements OnClickListener { …… @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: int progress = progressBar.getProgress(); progress = progress + 10; progressBar.setProgress(progress); break; default: break; } } }