对于UI的基础内容的学习,包括弹出对话框的创建与自建控件布局的练习

AlertDialog

效果:

AlertDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够
屏蔽掉其他控件的交互能力,因此AlertDialog一般都是用于提示一些非常重要的内容或者警告信
息。比如为了防止用户误删重要内容,在删除前弹出一个确认对话框。修改MainActivity中的代码,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
AlertDialog.Builder dialog = new AlertDialog.Builder (MainActivity.
this);
dialog.setTitle("This is Dialog");
dialog.setMessage("Something important.");
dialog.setCancelable(false);
dialog.setPositiveButton("OK", new DialogInterface.
OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.
OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
break;
default:
break;
}
}

ProgressDialog

效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
ProgressDialog progressDialog = new ProgressDialog
(MainActivity.this);
progressDialog.setTitle("This is ProgressDialog");
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.show();
break;
default:
break;
}
}

当数据加载完成后必须要调用ProgressDialog的
dismiss() 方法来关闭对话框

LinearLayout线性布局

1
2
3
4
5
6
7
8
android:orientation="horizontal"//水平
android:orientation="vertical" //垂直

android:layout_gravity="top"
android:layout_gravity="center_vertical"
android:layout_gravity="bottom"

android:layout_weight="1"//占比

RelativeLayout相对布局

1
2
3
4
5
android:layout_centerInParent="true"
android:layout_alignParentLeft="true"

android:layout_above="@id/button3"
android:layout_toLeftOf="@id/button3"

创建自定义控件

自定义布局

以标题栏为例

使用LinearLayout布局创建title

创建titleLayout.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
Button titleBack = findViewById(R.id.title_back);
Button titleEdit = findViewById(R.id.title_edit);
titleBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Activity) getContext()).finish();
}
});
titleEdit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "你点击了编辑按钮", Toast.LENGTH_SHORT).show();
}
});
}

在其它布局里面引入自定义控件

1
2
3
4
<cn.hozoy.UICustomViews.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</cn.hozoy.UICustomViews.TitleLayout>

改变styles文件,使系统任务栏透明

1
2
3
4
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">true</item>
<!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
<item name="android:statusBarColor">@android:color/transparent</item>

效果:

如何使任务栏不占用标题栏的内容,以后再探究