跟着书本学习,这是今天学习的成果,写在这里作为笔记和备份,也希望能对看到的人有所帮助。
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用法的总结。