class Downloader { // ↓ここから static public Bitmap downloadFile(String url) { try { Bitmap bmp = null; final DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet hg = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(hg); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { bmp = BitmapFactory.decodeStream(httpResponse.getEntity() .getContent()); hg.abort(); } return bmp; } catch (ClientProtocolException e) { Log.d("photoViewer", "error", e); return null; } catch (IOException e) { Log.d("photoViewer", "error", e); return null; } } // ↑ここまで }
public class DownloadFilesTask extends AsyncTask<String, Void, Bitmap> { // ↓ここから private ProgressDialog mProgressDialog; private MainActivity mActivity; public DownloadFilesTask(MainActivity activity) { mActivity = activity; } @Override protected void onPreExecute() { // プログレスダイアログを表示 mProgressDialog = new ProgressDialog(mActivity); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.setMessage("ダウンロード中..."); mProgressDialog.show(); } @Override protected Bitmap doInBackground(String... urls) { return Downloader.downloadFile(urls[0]); } @Override protected void onProgressUpdate(Void... progress) { } @Override protected void onPostExecute(Bitmap bmp) { mActivity.setImageBitmap(bmp); // プログレスダイアログを閉じる mProgressDialog.dismiss(); } // ↑ここまで }
public class MainActivity extends Activity { private ImageView mImageView; private Integer[] mThumbIds = { R.drawable.photo1, R.drawable.photo8, R.drawable.photo7, R.drawable.photo4, R.drawable.photo5, R.drawable.photo6 }; // 追加 private String[] mImageUrls = { "http://and-roid-app.appspot.com/images/photo1.jpg", "http://and-roid-app.appspot.com/images/photo2.jpg", "http://and-roid-app.appspot.com/images/photo3.jpg", "http://and-roid-app.appspot.com/images/photo4.jpg", "http://and-roid-app.appspot.com/images/photo5.jpg", "http://and-roid-app.appspot.com/images/photo6.jpg", "http://and-roid-app.appspot.com/images/photo7.jpg", "http://and-roid-app.appspot.com/images/photo8.jpg" }; //---- 中略----- public void setGallery() { Gallery g = (Gallery) findViewById(R.id.gallery); g.setAdapter(new ImageAdapter(this, mThumbIds)); g.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // ↓コメントアウト // Toast.makeText(MainActivity.this, "" + position, // Toast.LENGTH_SHORT).show(); new DownloadFilesTask(MainActivity.this).execute(mImageUrls[position]); // 追加 } }); }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.co.example.practice" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".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> </application> <!-- 追加 --> <uses-permission android:name="android.permission.INTERNET"/> </manifest>
public class MainActivity extends Activity { //---- 中略 ---- /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // --- 追加 ---- setContentView(R.layout.main); mImageView = (ImageView) findViewById(R.id.image_view); // サムネイルのギャラリーを作成 setGallery(); } //---- 中略 ----