0

internalstorage に画像ファイルを保存しています: 

"file:///storage/emulated/0/Download/pdfthumbnail5/helloworld.jpg"

画像ビューアアプリで問題なく開くことができるので、ファイルが破損したり読み取れなかったりすることはありません。

私がやろうとしているのは、この jpg をカスタム リスト ビューのサムネイルとして描画したいということです。アプリが画像のサムネイルを描画しようとするたびに、すべてのリストビュー ロジックが正常に動作しています (ここでは問題ではありません)。画像ファイルが存在しないと不平を言い、このメソッドの値を調べようとしました:

private static Drawable getDrawableFromUrl(final String url) throws IOException {
        if (url.contains("http")){   //when intent access available
            return Drawable.createFromStream(((java.io.InputStream) new java.net.URL(url).getContent()), "name");
        } else {   // when there is no internet access
            return Drawable.createFromPath(url);
        }
    }

Drawableのnullオブジェクトが返されます....ところで、最初の部分のifステートメントは無視してください。これは、アプリがインターネットにアクセスできる場合のためのものであり、URLから直接描画すると問題なくサムネイルを描画します。問題は、ローカルの内部ストレージ jpg からサムネイルを描画しないことです。

コード例で私を助けてください。ありがとう

4

1 に答える 1

1
private static Drawable getDrawableFromUrl(final String url, Context context) throws IOException {
        if (url.contains("http")){
            return Drawable.createFromStream(((java.io.InputStream) new java.net.URL(url).getContent()), "name");
        } else {
            return Drawable.createFromPath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/pdfthumbnail5/helloworld.jpg").toString());
        }
    }

動作します!

于 2014-07-23T12:11:13.437 に答える