2013-08-07 34 views
7

Có ai cho tôi biết sự khác biệt giữa setBackgroundResource(resourceid)setBackgroundDrawable(getResource().getDrawable(drawableid)) trong Android không?Sự khác biệt giữa setBackgroundResource và setBackgroundDrawable

+0

Hai dòng mà bạn cung cấp - không có sự khác biệt. Tuy nhiên, hãy lưu ý rằng 'setBackgroundDrawable' không cần phải lấy được từ các tài nguyên - nó có thể là một hình ảnh được tải xuống từ internet hoặc một bitmap được tạo khi đang di chuyển. –

+0

nhưng khi tôi vô hiệu hóa nút và sau đó bật, màu xám cho nút không xóa (ở đây lúc đầu tôi sử dụng setBackgroundResource để đặt nền có thể vẽ lại nhưng không hiển thị bất kỳ sự khác biệt nào và sau đó tôi đã sử dụng setBackgroundDrawable rồi nền nút được thay đổi thành thực tế drawable). Tại sao cả hai phương pháp thể hiện hành vi khác nhau nếu chúng không có sự khác biệt. –

+0

Bạn có thể đăng một số mã trình bày sự cố không? –

Trả lời

7

Bạn có thể tự mình xem số Android source code for the View class và tìm hiểu rằng có rất ít sự khác biệt!

public void setBackgroundResource(int resid) { 
    if (resid != 0 && resid == mBackgroundResource) { 
     return; 
    } 

    Drawable d= null; 
    if (resid != 0) { 
     d = mResources.getDrawable(resid); 
    } 
    setBackground(d); 

    mBackgroundResource = resid; 
} 

setBackground() chỉ gọi qua để setBackgroundDrawable() ...

public void setBackground(Drawable background) { 
    //noinspection deprecation 
    setBackgroundDrawable(background); 
} 
+0

Trực tiếp từ miệng của droid. – samosaris

Các vấn đề liên quan