前回までに作ったOpenGLで簡易画像ビュアーの機能を強化します。
ピンチイン・ピンチアウトの認識とOpenGL ES 2.0 のAPIを利用するので、Android2.2以降でマルチタッチ対応の端末が必要です。
このブログを書いている時点の開発環境は次の通りです。
・Windows8 (64bit)
・Eclipse Juno (32bit) (XP互換モードで起動)
・Android SDK r21.0.1
OpenGLで画像をテクスチャとして表示するためには、辺の長さが2の累乗(べき乗)の正方形である必要があります。
256×256ピクセル、512×512ピクセルなど。
このルールを守らないと端末によってはテクスチャが表示されないことがあります。
OpenGLの仕様とは言え、表示したい画像が全て正方形とは限りません。
今回は、縦と横のサイズが異なる画像を伸縮し、OpenGLで表示できる様にします。
そして1画面に2枚の画像を表示します。
300×200ピクセルの orientation.png
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvONDSajF1h2CbPmrxdtq8yq3puqd_ssQqiFPoVCblhBzsmmc1VETOOj1Tj3cU6tsJt3a_6hOh_aLWx_mb1lfdxBokEkj6b5L4DAmVUwkConofqsmtAafp9spuudHZJmt77Ld2tUelPKQ/s320/orientation.png)
200×300ピクセルの portrait.png
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFC9XZT1VP-Upq3vMgNiL_6RSXM9joTVaGSBqv2T2KsPinW9R7GxArr-DS8QysIhEGBXvMxJ6vzcOAdtRfb340VQK0M5ojuwuIUfcDFgFaqFlDKMJk5K23NhBrGZbet4C9OXTZ87qHxFU/s320/portrait.png)
二つの画像ファイルをプロジェクトの
にコピーします。
drawable-nodpi 以外のフォルダーに保存した画像は端末の解像度に応じて自動でスケーリングされるようです。(2014年5月31日訂正)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkPT4eJfAXd7G8IamNE3HOhIQXS9YT9d267FFcFy4nS-sF32ZN6ukAsS1CKqu9KAkTd6aZLTHHbtogK6hE37AfffUfNTfEtU07vYtIzhloJAR9l8aTG-iGHZyIT2jBsjVeIW6NOd_Gxw/s320/stretched_image_files.png)
※ ic_launcher.png はAndroid-SDKのデフォルトでインストールされるアイコン画像です。
フリーサイズの画像をテクスチャに表示するため伸縮させ正方形に納めます。余白は透明のピクセルで埋めます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMIasFYRfkrhz-m7c3xhFISD6J54PgTQxSlVS7ireFX6Ph6tewZiFslP25XW-DfXwdUZUdlvScXE9ZfL4MorDLZJ39fai8sn30rIz7rJpiqdfNOklOGDAkBqyQgSmoXyiOHDpNEYz-_P4/s320/stretch_description.png)
伸縮させた画像がギザギザにならないようにMatrixを使ってアンチエイリアス処理をします。
Activity(MainActivity.java)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。