Adsense_top

ラベル 開発 の投稿を表示しています。 すべての投稿を表示
ラベル 開発 の投稿を表示しています。 すべての投稿を表示

2016年7月30日土曜日

Androidメモ - 起動時、Viewのサイズを取得する

Androidのブログラミンメモです。
アプリ起動時にViewのサイズを取得したかったので、onStartでなくonCreateでgetHeight()などすると、0が返って来るなど苦労したためメモっておきます。

大元はお馴染み、「stack overflow」で探した書き込みから。

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.main);

  View targetVew = (VerticalView)findViewById(R.id.target_view);
  targetView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
  @Override
    public void onGlobalLayout() {
    //ここでサイズを取得する
      int height = targetView.getHeight();
      int width = targetView.getWidth();

      // 一度だけ呼ばれるようにする
      // APIレベル16で[removeGlobalOnLayoutListener]は廃止されているので注意
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        targetView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
      } else {
        targetView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
      }
    }
  });
}

他に、View.postで取る方法もあった。

2013年2月2日土曜日

Androidメモ - ハードキーイベントの横取り方法

Androidのプログラミングメモです。 

・ハードキーイベントの横取り方法 
Activityでは、「dispatchKeyEvent」を使用。 
Viewでは、「onKeyUp」「onKeyDown」を使用。
「onKeyUp」「onKeyDown」について、ハード(Androidのバージョン)により動作が異なるとの情報もあるため、「dispatchKeyEvent」の方が無難と思われる。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// 例はボタンが離された時
// ボタンが押された時を拾うにはKeyEvent.ACTION_DOWN
// (但し、長押しの場合、連続して呼ばれる事がある点に注意)
if (event.getAction() == KeyEvent.ACTION_UP) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_VOLUME_UP: // 音量アップボタン
// trueで、コード側で処理した事を表わす。
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN: // 音量ダウンボタン
return true;
// case
// : 
default:
return super.dispatchKeyEvent(event);
}
}
return super.dispatchKeyEvent(event);
}