跟着书本学习,这是今天学习的成果,写在这里作为笔记和备份,也希望能对看到的人有所帮助。
1.程序截图
1.1 主界面的布局,图中首先是一个TextView,然后是3个Button,后面是一个输入框EditText,再下面是一个ImageView(样子像复选框而已),最下面是一个ProgressBar相当于一个进度条。实现了那些东西就不说了,主要功能就不说了,下面还要贴代码。
1.2 点击Button2时弹出的Dialog对话框,这个对话框会存在于屏幕的最上层并且屏蔽掉Activity的交互。用于提醒用户一些重要的事情,比如你要删除一些文件就会淡出一个这样的对话框让你确认。
1.3 点击Button3时的界面,和上面的类似。当系统有某些处理时间耗时较长,用这个来提醒用户等待。
2.1 MainActivity.java代码:
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText mEt;
private TextView mTv;
private Button mBt;
private Button mBt2;
private Button mBt3;
private ImageView mIv;
private ProgressBar mPb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_main );
mTv = findViewById ( R.id.mTv );
mTv.setOnClickListener ( this );
mBt = findViewById ( R.id.mBt );
mBt.setOnClickListener ( this );
mBt2 = findViewById ( R.id.mBt2 );
mBt2.setOnClickListener ( this );
mBt3 = findViewById ( R.id.mBt3 );
mBt3.setOnClickListener ( this );
mEt = findViewById ( R.id.mEt );
mIv = findViewById ( R.id.mIv );
mPb = findViewById ( R.id.mPb );
}
public void onClick(View view){
switch(view.getId ()){
case R.id.mTv:
Toast.makeText ( this, "你点击了mTv", Toast.LENGTH_SHORT ).show ();
mIv.setImageResource ( R.drawable.check_unchoose );
break;
case R.id.mBt:
Toast.makeText ( this, "你点击了mBt", Toast.LENGTH_SHORT ).show ();
//读取EditText的输入显示在TextView
String str = mEt.getText ().toString ();
mTv.setText ( str );
//设置ImageView的图片是check_choose
mIv.setImageResource ( R.drawable.check_choose );
//让环形进度条消失(ProgressBar)
/*if(mPb.getVisibility ()==View.GONE){
mPb.setVisibility ( View.VISIBLE );
}else {
mPb.setVisibility ( View.GONE );
}*/
int pro = mPb.getProgress ();
pro = pro+10;
mPb.setProgress ( pro );
break;
case R.id.mBt2:
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle ( "你是猪吗?" );
dialog.setMessage ( "选是选是,快选是,否则我就退出!" );
dialog.setCancelable ( false );//设置成false后,只有选了选项才能继续,按返回不能退出
dialog.setPositiveButton ( "是", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText ( MainActivity.this,"这就乖了嘛!",Toast.LENGTH_SHORT ).show ();
}
});
//有选项对话框
dialog.setNegativeButton( "不是", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText ( MainActivity.this,"再见,你这只不自知的猪!",Toast.LENGTH_SHORT ).show ();
new Handler ( ).postDelayed ( new Runnable () {
@Override
//延时两秒后销毁Activity
public void run() {
finish ();
}
}, 2000);
}
});
dialog.show ();
break;
case R.id.mBt3:
//处理事务是等待提示对话框
ProgressDialog progressDialog = new ProgressDialog ( MainActivity.this );
progressDialog.setTitle ( "我是一个圆圈!" );
progressDialog.setMessage ( "我就转啊转...转啊转......" );
progressDialog.setCancelable ( true );//按返回会退出提示对话框
progressDialog.show ();
break;
default:
break;
}
}
}
学到了:按键事件比较多的时候可以让Activity实现接口(implements View.OnClickListener)后面通过switch语句实现按键监听事件,会少些很多代码,也会易读一些。
2.2 MainActivity布局文件(Activity_main):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/mTv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"
android:hint="Hello World!"
android:textColorHint="#bf16d6"
android:layout_marginTop="20dp"
android:gravity="center"
android:textSize="25sp"
android:textColor="#bf16d6"
/>
<Button
android:id="@+id/mBt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button1"
android:textAllCaps="false"/>
<Button
android:id="@+id/mBt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button2"
android:textAllCaps="false"/>
<Button
android:id="@+id/mBt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button3"
android:textAllCaps="false"/>
<EditText
android:id="@+id/mEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Type something here"
android:maxLines="2"/>
<ImageView
android:id="@+id/mIv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/check_unchoose"
android:layout_gravity="center"/>
<ProgressBar
android:id="@+id/mPb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
/>
</LinearLayout>
学到了一个新的控件,就是ProgressBar,具体使用方法点击这里参见大佬对ProgressBar用法的总结。