01/10/2018, 00:51

Về ProgressBar trong android studio

Mọi người cho em hỏi là em tạo 1 project, và có 1 thanh ProgressBar. cứ sau 1300 ms, thì thanh ProgressBar sẽ được load xong 100% và có 1 imageview sẽ được chuyển đổi thành ảnh khác. em dùng CountDownTimer. đoạn code của em

 CountDownTimer   timer= new CountDownTimer(1300,13) {
        @Override
        public void onTick(long l) {
            n++;   // ở đây ban đầu cho n=1, sau 13ms sẽ tăng dần lên đến 100
            load.setProgress(n);
        }

        @Override
        public void onFinish() {
            img.setImageResource(R.drawable.a27);
        }
    };

Nhưng có 1 chuyện là với số giây lớn thì không sao, nhưng với 1300ms thì thanh ProgressBar chưa load được hết thì đã hết thời gian, hình ảnh thì cũng được chuyển. Mọi người cho em xin cách khắc phục với ạ, em cảm ơn

Tâm Ninja viết 03:02 ngày 01/10/2018

Một trong nhưng Best pratice của Android là không sử dụng Timer.
Bài toán của bạn là một trong những ví dụ. Vì timer của bạn không thể chạy được đúng tuần tự cách nhau 13 giây. Cái này thì chắc là bạn phải nghiên cứu qua một chút về nguyên lí hệ điều hành và threading để hiểu mình không đi sâu. Nếu muốn dùng Timer thì cách fix như sau: Sử dụng việc count thời gian.

CountDownTimer   timer= new CountDownTimer(1300,13) {
    private Date mStartDate = new Date();
    @Override
    public void onTick(long l) {
        Date now = new Date();
        // Lấy now trừ đi start chia thời gian cho 13 để tính được ra n
        load.setProgress(n);
    }

    @Override
    public void onFinish() {
        img.setImageResource(R.drawable.a27);
    }
};
Bài liên quan
0