1.toast弹框:
<Button
android:layout_width="match_parent"
android:onClick="studyToast"
android:layout_height="wrap_content" />
MainActivity:
public void studyToast(View view) {
Toast.makeText(this, "hello toast", Toast.LENGTH_LONG).show(); //this 上下文 ""弹出的内容 toast.保留时间 LENGTH_LONG 时间较长 LENGTH_SHORT 一闪而过
2.imageview:
注意事项:res下面的资源名不能使用大写字母,特别是图片资源中的图片的文件名,会造成R.java文件丢失,改正确后即可
例如:smallImage.png错误,small_image.png正确
scaleType(缩放类型)
scaleType的属性值有:matrix fitXY fitStart fitCenter fitEnd center centerCrop centerInside
<!--展示图片的控件-->
<ImageView
android:layout_width="100dp"
android:background="@color/red"
android:src="@drawable/small_image"
android:scaleType="matrix"
android:layout_height="100dp" />
3.进度条 ProgressBar和其子线程访问主线程(线程中的通信handler):
3.1常用属性
style=”?android:attr/progressBarStyleHorizontal” 默认为圆形
android:progress=”33”
android:max=”100”
线程休眠
Thread.sleep(100);//抛异常
SystemClock.sleep(100);//不会抛异常
3.2 线程注意事项:
不能在主线程中执行耗时的操作,只能在子线程中操作
另外,在子线程中不能操作主线程中的控件(ProgressBar除外)
3.3 Handler
用于线程之间的通信,比如:主线程与子线程
3.4 线程小结
SubThread->MainThread 错误
SubThread->Handler->MainThread 正确
<!--帧布局悬浮效果-->
<FrameLayout
android:layout_width="60dp"
android:layout_height="60dp">
<TextView
android:id="@+id/tv_main_tv1"
android:layout_width="60dp"
android:layout_height="match_parent" />
</FrameLayout>
<ProgressBar
android:id="@+id/pb_main_pb1"
android:layout_width="match_parent"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:layout_height="60dp" />
<Button
android:id="@+id/btn_main_btn1"
android:layout_width="match_parent"
android:onClick="setProgressBar"
android:layout_height="wrap_content" />
MainActivity逻辑界面:
public class MainActivity extends AppCompatActivity {
private ProgressBar pb_main_pb1;
private int progress;
private TextView tv_main_tv1;
private MyHandler myHandler=new MyHandler();
private class MyHandler extends Handler{
public void handleMessage(Message msg){
super.handleMessage(msg);
progress++;
pb_main_pb1.setProgress(progress);
tv_main_tv1.setText(progress + "%");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb_main_pb1 =(ProgressBar) this.findViewById(R.id.pb_main_pb1);//可能版本不同,需要强转
tv_main_tv1 = (TextView) this.findViewById(R.id.tv_main_tv1);
}
public void setProgressBar(View view) {
if (0==progress){
new Mythread().start();
}
}
private class Mythread extends Thread{
@Override
public void run() {
super.run();
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (progress == 100) {
progress = 0;
break;
}
Message msg=new Message();
msg.what=1;
myHandler.sendMessage(msg);
}
}
}
}