0

私は学習者で、訪問者の URL から画像を取得する訪問者アプリに取り組んでいます。オンラインで見つけた次のコードを使用して、画面の前にインテントを追加し、画面に「訪問者の画像を表示」というボタンを追加することで画像を読み込むことができましたが、アプリが表示されるとすぐに画像を読み込む必要があります起動します。そのためにどのような変更を加えることができますか? ご協力いただきありがとうございます。

OnClickListener getImageBtnOnClick = new OnClickListener() {
    public void onClick(View view) {
        Context context = view.getContext();
        Editable ed = inputUrl.getText();
        Drawable image = ImageOperations(context,ed.toString(),"image.jpg");
        ImageView imgView = new ImageView(context);
        imgView = (ImageView)findViewById(R.id.image1);
        imgView.setImageDrawable(image);
    }
};

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    inputUrl = ((EditText)findViewById(R.id.imageUrl));
    inputUrl.setSingleLine();
    inputUrl.setTextSize(11);
    Button getImageButton = (Button)findViewById(R.id.getImageButton);
    getImageButton.setOnClickListener(getImageBtnOnClick);

}   

private Drawable ImageOperations(Context ctx, String url, String saveFilename) {
    try {
        InputStream is = (InputStream) this.fetch(url);
        Drawable d = Drawable.createFromStream(is, "src");
        return d;
    } catch (MalformedURLException e) {
        e.printStackTrace();
        return null;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

public Object fetch(String address) throws MalformedURLException,IOException {
    URL url = new URL(address);
    Object content = url.getContent();
    return content;
}
4

1 に答える 1

2

SmartImageView を利用できます。これは Android の標準 ImageView のドロップイン代替品であり、さらに URL またはユーザーの連絡先アドレス帳から画像を読み込むことができます。画像はメモリとディスクにキャッシュされ、超高速の読み込みが可能です。

https://github.com/loopj/android-smart-image-view

または、アクティビティの OnResume で、メイン UI スレッドのブロックを回避するために、別のスレッドのボタンのクリック リスナーで現在行っているように、URL から画像のダウンロードを開始します。ダウンロードが完了したら、ワーカー スレッドからハンドラーを使用してイメージ ビューを更新できます。

独自のスレッドとハンドラーを作成して UI を更新する代わりに、非同期タスクを利用することもできます。非同期タスクの詳細については、次のリンクを参照してください http://www.vogella.com/articles/AndroidPerformance/article.html

于 2012-11-30T20:31:12.053 に答える