Friday, November 07, 2014

Menampilkan Image dari Internet ke ImageView Android

UPDATE
Metode ini sudah tidak bisa dipakai

Gambar yang terdapat di suatu URL akan ditampilkan ke dalam ImageView.
Buat layout dengan sebuah ImageView di dalamnya untuk menampilkan image
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:id="@+id/a">

    <!-- komponen ImageView untuk menampilkan image dari internet -->
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>
Di dalam MainActivity tambahkan class DownloadImageTask yang meng-extends AsyncTask untuk mendownload image dari internet
    private class DownloadImageTask extends AsyncTask {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }
Panggil DownloadImageTask di dalam method OnCreate dengan menambahkan URL gambar yang akan ditampilkan
new DownloadImageTask((ImageView) findViewById(R.id.imageView)).execute("http://i1-news.softpedia-static.com/images/news2/Guake-Review-463465-4.jpg");
Source code lengkap MainActivity akan menjadi seperti ini
MainActivity.java
package ardhi.com.simpleimageviewer;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import java.io.InputStream;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new DownloadImageTask((ImageView) findViewById(R.id.imageView)).execute("http://i1-news.softpedia-static.com/images/news2/Guake-Review-463465-4.jpg"); //memanggil class DownloadImageTask untuk menampilkan image dari url yang dimasukkan
    }

    //class untuk mendownload image dan menampilkannya ke imageView, menggunakan asynchronous task
    private class DownloadImageTask extends AsyncTask {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
Tambahkan permission ke AndroidManifest
<uses-permission android:name="android.permission.INTERNET"/>
Sehingga AndroidManifest akan menjadi seperti ini
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ardhi.com.simpleimageviewer" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="ardhi.com.simpleimageviewer.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-permission android:name="android.permission.INTERNET"/> <!-- permission untuk mengakses internet -->
    </application>

</manifest>
Hasil ketika dijalankan adalah sebagai berikut

Project lengkap (dibuat menggunakan Android Studio 0.8.14) dapat diclone dari
https://github.com/ardhiesta/Simple-Image-Viewer

sumber
http://stackoverflow.com/questions/2471935/how-to-load-an-imageview-by-url-in-android

0 comments:

Post a Comment

ardhi.web.id. Powered by Blogger.