Tôi đã tạo Chế độ xem tùy chỉnh bằng cách mở rộng từ Chế độ xem. Trong onDraw(), tôi đã vẽ một số vòng kết nối và các nội dung khác. Nhưng bây giờ tôi muốn thêm một nền tảng từ một tài nguyên (thẻ sd hoặc một dòng) mà thực sự là một bản đồ tôi tải về từ máy chủ của chúng tôi và hơn vẽ trên đó. Đó là dành cho Android 8+Vẽ nền của Chế độ xem tùy chỉnh từ tệp .png trên Android
@Override
protected void onDraw(Canvas canvas) {
Canvas g = canvas;
String file = "/mnt/sdcard/download/tux.png";
Bitmap bg = null;
try {
bg = BitmapFactory.decodeFile(file);
g.setBitmap(bg);
} catch (Exception e) {
Log.d("MyGraphics", "setBitmap() failed according to debug");
}
}
Bằng cách nào đó g.setBitmap (bg) giữ không, tôi đã không nhìn vào thông số kỹ thuật hình ảnh, nhưng thực chất nó chỉ là một hình ảnh tux (không 24 bit màu) của định dạng PNG. Ai đó có thể cho tôi một số mẹo về cách thêm hình nền để tôi có thể vẽ trên đó không? Cảm ơn bạn.
Martin, Cảm ơn bạn rất nhiều vì ví dụ rõ ràng này. Lạ thật, tôi đã làm ví dụ đầu tiên của bạn và bằng cách nào đó nó không hoạt động! Đó là nơi tôi bắt đầu bị lạc. Thứ hai là kéo dài để phù hợp trong bất động sản của xem, đó là chính xác những gì đã cuối cùng. Nhưng lần đầu tiên tôi thích nó tốt hơn nhiều, bằng cách này tôi có thể định vị hình ảnh mà không sửa đổi kích thước của nó. – AndaluZ
Khi bạn thử ví dụ đầu tiên của tôi, chính xác những gì không hoạt động? Một ngoại lệ (nếu có, ngoại lệ nào)? Không có gì được vẽ trên màn hình? Bạn đang chạy phiên bản Android nào? Bạn có thể cung cấp mã chính xác bạn sử dụng mà bạn mong đợi để làm việc nhưng điều đó không? –
Nó hoạt động với bạn của tôi, với .png cũng như .jpg. Sau bài viết của bạn tôi vẫn đang chơi và thử một số hình ảnh và phát hiện ra rằng không phải tất cả các tệp .jpeg đều hoạt động. Khi tôi sử dụng hình ảnh jpg nhỏ như 50 KB nó hoạt động, nhưng khi sử dụng hình ảnh jpg lớn hơn như 600 KB nền biến hoàn toàn trắng. Tôi không biết liệu nó có liên quan đến kích thước hình ảnh hay không, khiến những người không hoạt động có kích thước lớn hơn nhiều so với bất động sản của tôi. Sử dụng setBackgroundDrawable() không hoạt động, nhưng nó cũng co lại thành kích thước bất động sản của View. – AndaluZ