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

Monday, November 03, 2014

Kapan

Tumben ni ga bikin postingan tutorial, ya ga apa-apa sekali-sekali post curcol *asal masih lebih banyak postingan tutorialnya.
Pagi ini saya memulai sesuatu yang sudah lama tak saya lakukan.
Saya masih berpegang teguh bahwa sesuatu yang baik namun berat itu ga akan terasa berat lagi kalau kita (memaksa) menjadikannya sebagai bagian dari kebiasaan.
Dan mulai pagi ini mencoba kembali memulai membiasakan hal yang baik itu.

Curcolan ini terkait dengan sebuah pertanyaan, "kapan"?
Haha, saya yakin teman-teman sudah mengerti arah tujuan yang dimaksud pertanyaan itu.
Namun saya belum akan membahas itu, mari kita tengok hal lain yang lebih mendesak untuk saat ini yaitu tesis.

Sekarang saat yang krusial dan saya belum memantapkan hati memilih tema.
Hambatan klise yang itu-itu saja menurut saya, intinya bingung.
Kapan harus memulai.

Cara terbaik untuk menyelesaikan suatu masalah sudah jelas, yaitu dengan menyelesaikannya :v
Mungkin teman-teman yang sedang bergelut dengan tugas akhir, skripsi, ataupun tesis pasti mengalami.
Bingung dengan tema yang mau diangkat,
belum tahu harus memulai dari mana,
atau yang lebih parah : blank.

Hal yang seharusnya tidak perlu dialami sebenarnya, karena kebingungan yang demikian tidak akan terjadi kalau kita serius.

Ada pula yang mengalami hambatan karena memikirkan yang tidak perlu.
Misalnya milih tema A, kemudian karena berpikir "sepertinya bikin programnya susah", trus galau.

Sedikit banyak saya mengalami itu.

Mari kita memulai untuk menyingkirkan pikiran-pikiran yang menghambat itu, mulai dari sekarang.

Banyak cara kalau kita mau berusaha.
Menulis (tugas akhir, skripsi, atau tesis) sebenarnya bukanlah tentang membuat sebuah kesempurnaan, namun tentang kesungguhan.

Kapan?
Sekarang.
Mohon do'a teman-teman agar saya bisa menyelesaikan tesis saya, 8 bulan lagi.

Sunday, November 02, 2014

Membuat Java Webapps dengan Maven + Struts + Hibernate (bagian 2)

2. Membuat Database

Selanjutnya buat database di MySQL dengan mendesainnya terlebih dulu menggunakan MySQL Workbench.
Klik menu File → New Model
Kemudian tambahkan EER Diagram
Tambahkan table
Klik kanan pada table yang muncul, pilih Edit 'table'
Kemudian ubah nama table
Tambahkan kolom-kolom beserta tipe datanya dengan membuka tab Columns
Berikut rancangan tabel-tabel yang digunakan, beserta nama kolom, tipe data, serta relasinya
Untuk bikin relasi one to many, cari ikon kayak gini ya

Postingan belum selesai, tunggu update selanjutnya yah...
bagian 1 : Membuat Project Java Web Maven
bagian 2 : Membuat Database
ardhi.web.id. Powered by Blogger.