文章地址:http://blog.youkuaiyun.com/scarthr/article/details/41989963
继续UI控件第二部分。
一 SeekBar
这是一个进度条控件,xml文件:
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
SeekBar的使用也非常简单:
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar1);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 停止拖动执行的方法
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 开始拖动执行的方法
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// 拖动变化执行的方法
System.out.println("当前进度条为:" + progress + "%");
}
});
三个回调方法使用也都标明了。
二 GridView
网格布局也是使用的非常广泛,类似于ListView,同样也是使用到了适配器。xml文件:
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3" />
为了方便我们还是使用了ArrayAdapter适配器:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
GridView gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(adapter);
for (int i = 0; i < 60; i++) {
adapter.add("测试数据" + i);
}
三 ProgressDialog
我们这里使用一个按钮来控制进度对话框的显示,当进度加载满后进度对话框消失:
<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" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示进度对话框" />
</LinearLayout>
然后是Java文件:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final ProgressDialog progressDialog = ProgressDialog.show(
MainActivity.this, "加载中", "正在加载,请稍后");
new Thread() {
public void run() {
try {
Thread.sleep(3000);
progressDialog.dismiss();
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
}
});
点击按钮后开始加载进度对话框,3秒后加载消失。
四 Notification
通知Notification我们还是做成在点击按钮后显示通知。 <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示通知" />
Java文件:
final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
Notification notification = new Notification(
R.drawable.ic_launcher, "Ticker", System
.currentTimeMillis());
notification.setLatestEventInfo(MainActivity.this, "标题", "内容",
PendingIntent.getActivity(MainActivity.this, 1,
getIntent(), 0));
manager.notify(R.layout.activity_main, notification);
}
});
使用getSystemService(Context.NOTIFICATION_SERVICE)获取通知管理对象。
其中Notification构造函数第一个参数是图标,第二个参数Ticker是在通知栏显示的文本,第三个参数是显示的时间。
setLatestEventInfo第一个参数是Context上下文,第二个参数是下拉通知后显示的标题,第三个参数是内容,第四个参数是一个PendingIntent,意思是点击通知后的意图对象。
PendingIntent.getActivity第一个参数是Context上下文,第二个参数是请求码,第三个是Intent对象,第四个是Flag值。
最后调用manager的notify即可显示通知,notify第一个参数是改通知独一无二的id值,传当前Activity的布局文件id是一个不错的选择。
五 ScrollView
ScrollView是可滚动的视图。在这个布局下多添加几个控件:
<ScrollView 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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示通知" />
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" />
<ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" >
<requestFocus />
</EditText>
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" />
<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" />
</RadioGroup>
</RadioGroup>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
<EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
</LinearLayout>
</ScrollView>
ScrollView作为最外层的标签,他的子标签必须只能有一个控件,我们这里使用了LinearLayout,里面放了许多控件。
运行可以看到可以拖动整个界面。
六 RatingBar
评价条。xml:
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Java文件:
RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar1);
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
System.out.println("评价为:" + rating);
}
});
rating也可以为小数,0.5的增减幅度可以看到使用起来非常简单。