その①と同様に、レイアウトXLMファイルを利用して画面の適当な場所に「ImageView」の画像とボタンをレイアウトします。
~ レイアウトXMLサンプル(抜粋)~
レイアウトXMLファイル(activity_main)の「ImageView」の部分です。回転させる画像のスケールタイプを「matrix」に設定して下さい。これをしないと画像が回転しません。
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/sample"
android:scaleType="matrix"
android:layout_marginTop="100dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
~ Java サンプルソース ~
ボタンを押すと画像が45度回転する簡単なサンプルです。
package com.example.vw.imageview;
import は省略・・・
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView mImageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView)findViewById(R.id.imageView); //イメージビューを取得
findViewById(R.id.button_kaiten).setOnClickListener(this); //ボタンにクリック処理を設定
}
//ボタンがクリックされた時の処理
public void onClick(View v) {
Matrix matrix = new Matrix(); //マトリックスを作成
matrix.postRotate(45, mImageView.getHeight() / 2, mImageView.getWidth() / 2); //45度回転する
mImageView.setImageMatrix(matrix); //イメージビューにマトリックスをセット
}
}
~ 結果 ~
今回は「ImageView」の中心を軸にして画像が回転しましたが、今度は「A」の文字の一部分が欠けてしまいました。
画像の欠けを無くすには「ImageView」自体のサイズを大きくする必要がありそうですが、少し調べてみたところ「ImageView の枠の大きさは変えることはできない・・・」という情報がありましたので、別の方法を探した方が早いかもしれません。