2011-12-22 29 views
26

Có cách nào để tôi có thể lấy đường dẫn hình ảnh từ thư mục drawable trong android dưới dạng Chuỗi. Tôi cần điều này vì tôi thực hiện luồng xem của riêng mình, nơi tôi hiển thị hình ảnh bằng cách sử dụng đường dẫn của họ trên thẻ sd, nhưng tôi muốn hiển thị hình ảnh mặc định khi không có hình ảnh để hiển thị.Android có được đường dẫn hình ảnh từ drawable như chuỗi

Bất kỳ ý tưởng nào về cách thực hiện điều đó?

+1

Khi tôi đọc [ở đây] [ 1] không thể thực hiện được vì các tệp nằm bên trong gói ứng dụng. [1]: http://stackoverflow.com/questions/6301493/android-get-path-of-resource –

+0

Đây là câu trả lời đúng. http://stackoverflow.com/a/25758286/7795876 – Hangman

Trả lời

-6

Bằng cách này bạn có thể xem một hình ảnh cụ thể trong thư mục drawable của mình. Nhận tài nguyên và sau đó chỉ định hình ảnh bạn muốn truy cập:

Resources res = getResources(); 
Drawable drawable = res.getDrawable(R.drawable.myimage); 

Để biết thêm thông tin, hãy xem Drawable resources.

+0

Điều đó không trả lời được câu hỏi. Có vẻ như anh ta biết cách lấy hình ảnh từ thư mục drawable, nhưng R.drawable.myimage trả về một int, và anh ta tìm đường dẫn chuỗi của thư mục Resource. – lagos

-5

Trước tiên hãy kiểm tra xem tệp có tồn tại trong SDCard hay không. Nếu tập tin doesnot tồn tại trong SDcard sau đó bạn có thể thiết lập hình ảnh sử dụng setImageResource() methodand qua hình ảnh mặc định từ thư mục drawable

Mẫu Mã

File imageFile = new File(absolutepathOfImage);//absolutepathOfImage is absolute path of image including its name 
     if(!imageFile.exists()){//file doesnot exist in SDCard 

     imageview.setImageResource(R.drawable.defaultImage);//set default image from drawable folder 
     } 
34

Những tất cả đều cách:

String imageUri = "drawable://" + R.drawable.image; 

cách khác Tôi đã thử nghiệm

Uri path = Uri.parse("android.resource://com.segf4ult.test/" + R.drawable.icon); 
Uri otherPath = Uri.parse("android.resource://com.segf4ult.test/drawable/icon"); 

String path = path.toString(); 
String path = otherPath .toString(); 
+0

Tôi nhận được định dạng tệp không được hỗ trợ lỗi với tất cả chúng. – NarendraJi

+1

mẫu trả về như vậy Ngoại lệ FileNotFound –

+0

Cách tiếp cận đầu tiên không hoạt động, – mshah

0

Nếu bạn định lấy hình ảnh từ đường dẫn, tốt hơn là sử dụng Tài sản thay vì cố gắng tìm ra đường dẫn của thư mục drawable.

InputStream stream = getAssets().open("image.png"); 
    Drawable d = Drawable.createFromStream(stream, null); 
2

dựa trên một số trả lời trên i improvised nó một chút

tạo phương pháp này và gọi nó bằng cách thông qua tài nguyên của bạn

Reusable Phương pháp

public String getURLForResource (int resourceId) { 
    return Uri.parse("android.resource://"+R.class.getPackage().getName()+"/" +resourceId).toString(); 
} 

Sample gọi

getURLForResource(R.drawable.personIcon) 

hoàn ví dụ về hình ảnh tải

String imageUrl = getURLForResource(R.drawable.personIcon); 
// Load image 
Glide.with(patientProfileImageView.getContext()) 
      .load(imageUrl) 
      .into(patientProfileImageView); 

bạn có thể di chuyển các chức năng getURLForResource vào một tập tin util và làm cho nó tĩnh để nó có thể được tái sử dụng

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