8

非常に基本的な機能を探しています。アプリを設計しようとしていますが、URLから画像を読み込むだけです。いくつかの質問とWebサイトを見つけましたが、それらはすべて古くて古いようですが、問題があると思うのは、コードをImageViewのアクティビティmain.xmlにリンクすることです。

あなたが持っている提案やリンクがあれば、私は大いに感謝します、ありがとう。

4

4 に答える 4

12

ここでは、これが画像ビューにURLからの画像を表示する方法
です。メインスレッド以外のスレッドからこのコードを呼び出す必要があります

ImageView img = (ImageView) findViewById(R.id.imageView1);
try {
        URL url = new URL("Your URL");
        //try this url = "http://0.tqn.com/d/webclipart/1/0/5/l/4/floral-icon-5.jpg"
        HttpGet httpRequest = null;

        httpRequest = new HttpGet(url.toURI());

        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = (HttpResponse) httpclient
                .execute(httpRequest);

        HttpEntity entity = response.getEntity();
        BufferedHttpEntity b_entity = new BufferedHttpEntity(entity);
        InputStream input = b_entity.getContent();

        Bitmap bitmap = BitmapFactory.decodeStream(input);

        img.setImageBitmap(bitmap);

    } catch (Exception ex) {

    }

コードをtrycatchで囲むことを忘れないでください(このコードではすでにそれを行っています)

または、webviewを使用してURLから画像を読み込むことができます

WebView web = (WebView) findViewById(R.id.webView1);
web.loadUrl("Your Url");

アセットフォルダから画像を読み込もうとしている場合、URLは「file:///android_asset/yourimage.jpg」のように始まります。
それ以外の場合、通常のインターネットURLは「http://0.tqn.com/d/webclipart/1 」のようになります。 /0/5/l/4/floral-icon-5.jpg "

これがあなたのために働くことを願っています幸運

于 2013-02-14T03:28:36.610 に答える
4

imageloaderと呼ばれるオープンソースライブラリがあります。広く使用されており、直接使用することも、同様のコードを作成することもできます。

https://github.com/nostra13/Android-Universal-Image-Loader

于 2013-02-14T03:28:39.050 に答える
0

画像を取得し、php側でbase64に変換してから、Android側で画像にデコードできます。

于 2013-02-14T05:03:25.923 に答える
0

イメージをダウンロードするためのベストプラクティスは、メインスレッドを中断しないようにバックグラウンドスレッドで実行し、必要に応じてユーザーインターフェイスを更新することです。

パブリッククラスMainActivityはAppCompatActivityを拡張します{

FrameLayout frameLayout;
ImageView imageView;
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    frameLayout= (FrameLayout) findViewById(R.id.containerlayout);
    imageView= (ImageView) findViewById(R.id.imageView);
    progressBar= (ProgressBar) findViewById(R.id.progressBar);

    String url="http://www.flat-e.com/flate5/wp-content/uploads/cover-960x857.jpg";
    MyTask myTask= new MyTask();
    myTask.execute(url);
}
class MyTask extends AsyncTask<String, Void, Bitmap> {

    @Override
    protected void onPreExecute() {
        progressBar.setVisibility(View.VISIBLE);
    }

    @Override
    protected Bitmap doInBackground(String... voids) {

        Bitmap bitmap=null;
        try {
            URL url =new URL(voids[0]);
            HttpURLConnection connection= (HttpURLConnection) url.openConnection();
            InputStream inputStream= connection.getInputStream();
            bitmap = BitmapFactory.decodeStream(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bitmap;
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        progressBar.setVisibility(View.GONE);
        imageView.setImageBitmap(bitmap);

    }
}

}

ここで、この例では、すべてのネットワーク操作を実行したAsyncTaskを拡張する内部クラスMyTaskを作成しました。マニフェストファイルにUses権限を必ず追加してください。

これがあなたにも役立つことを願っています。

于 2016-10-05T10:49:30.347 に答える