0

AndroidのURLからボタンの背景画像をどのように設定するのか疑問に思っていました。それを知る必要がある場合、ボタンIDは青色です。

これを試しましたが、うまくいきませんでした。

    public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    InputStream in = null;
    BufferedOutputStream out = null;

    try {
    in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);

    final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
    out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
    copy(in, out);
    out.flush();

    final byte[] data = dataStream.toByteArray();
    BitmapFactory.Options options = new BitmapFactory.Options();
    //options.inSampleSize = 1;

    bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
    } catch (IOException e) {
    Log.e(TAG, "Could not load Bitmap from: " + url);
    } finally {
    closeStream(in);
    closeStream(out);
    }

    return bitmap;
    }
4

3 に答える 3

1

ビットマップを取得するために次のコードを使用しました。重要なことの 1 つは、InputStream を取得できない場合があり、それが null であるということです。それが発生した場合は 3 回試行します。

public Bitmap generateBitmap(String url){
    bitmap_picture = null;

    int intentos = 0;
    boolean exception = true;
    while((exception) && (intentos < 3)){
        try {
            URL imageURL = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) imageURL.openConnection();
            conn.connect();
            InputStream bitIs = conn.getInputStream();
            if(bitIs != null){
                bitmap_picture = BitmapFactory.decodeStream(bitIs);
                exception = false;
            }else{
                Log.e("InputStream", "Viene null");
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            exception = true;
        } catch (IOException e) {
            e.printStackTrace();
            exception = true;
        }
        intentos++;
    }

    return bitmap_picture;
}
于 2013-06-14T23:01:59.960 に答える
0

画像の読み込み中に UI がフリーズするため、UI (メイン) スレッドに画像を直接読み込まないでください。代わりに別のスレッドで実行します。たとえば、AsyncTask. AsyncTask はそのdoInBackground()メソッドで画像をロードし、メソッドでボタンの背景画像として設定できますonPostExecute()。この回答を参照してください: https://stackoverflow.com/a/10868126/2241463

于 2013-06-14T23:03:51.293 に答える