Android studio 常用控件2

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);

            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43163499/article/details/82656564