2014年8月9日土曜日

androidアプリ開発テクニックまとめ volley編その1

今回はvolleyを使って画像のサイズを変更して表示する方法を記載します。

動作確認をしたのは、前回と同じく

android:minSdkVersion=”14”
android:targetSdkVersion=”19”

になります。

volleyを使った画像処理で、表示画像サイズを変更する

androidで画像表示をする場合、最近(2014/08)ではvolleyを使うことが一般的になってきました。
サーバーAPIを使うアプリの場合、これまではAsyncTaskを使って複雑怪奇なコードを書くことが多かったのですが、volleyを導入することで随分と処理は楽になりました。

今回はvolleyで取得した画像を、端末の大きさに合わせて拡大表示する方法を実装しました。
以下、ソースコードです。


        // ディバイスの幅を取得
        float deviceWidth = getDeviceWidth();
        // 画像サイズの取得
        float display_image_width = bean.image_width;
        float display_image_height = bean.image_height;

        // 比率
        float ratio = deviceWidth / display_image_width;
        // ディバイス幅に合わせてwidthを計算
        display_image_width = ratio * display_image_width;
        // ディバイス高さに合わせてheightを計算
        display_image_height = ratio * display_image_height;

        // ImageViewの画像サイズを取得して再設定する
        RelativeLayout.LayoutParams imageParams = (RelativeLayout.LayoutParams)mImageView.getLayoutParams();
        imageParams.width = (int)display_image_width;
        imageParams.height = (int)display_image_height;
        mImageView.setLayoutParams(imageParams);

        // 非同期ローディング処理
        ImageListener imageListener = ImageLoader.getImageListener(mImageView, R.drawable.default_image, R.drawable.no_image);
        imageLoader.get(bean.image_path, imageListener, (int)display_image_width, (int)display_image_height);

上記のコードの場合、ImageViewがRelativeLayoutの中に記載されていることに注意してください。
getLayoutParams()メソッドでレイアウト情報を取得して、widthとheightを上書きして再設定しています。

上記のソースコードだけを見ると、冗長に見えるかもしれませんが、AsyncTaskとWeakReferenceを使っていた時代のことを思うと格段の進歩です。(キャッシュもvolley側で行ってくれます)

volleyは便利な反面、色々と癖のあるライブラリです。
画像のuploadや、自動リトライ、Basic認証、SSL認証などではまり、色々と苦労をしました。

この辺りの対応テクニックも後日に公開していきたいと思います。

以上

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...