Androidケース開発、TV開発、経験総括NO.1
Android
TVアプリ開発と一般的なAndroid開発の最大の違いはフォーカス制御であり、ユーザーがAndroid TV機器を使用して主にリモコンでアプリを操作する
トップボックスのTVアプリケーションは携帯電話アプリケーションとは異なり、タッチスクリーンがないものが多く、リモコンに頼るしかないため、焦点の位置を維持し、現在の操作作用の対象をユーザーに知らせる.しかし、いくつかのappは、focusに対するシステムの判断に基づいて、
表示される状況:上下ナビゲーション時、所望の結果ではない.エッジが移動すると、フォーカスが失われる場合がある.ある位置に直接位置決めしたい場合があります
Androidはいくつかのフォーカス関連属性を提供し、既存のフレームワーク層の下でViewの属性を設定することでフォーカスを得る
android:focusable
:コントロールがフォーカスを得ることができるかどうかを設定します(TV開発では、この必須の1つで、コントロールのデフォルトはfocusがありません)
フォーカス制御では、Androidには独自のフォーカス移動軌跡があり、システムの軌跡に従ってフォーカスを移動したくない場合は、次の4つのオプションでフォーカスを指定する必要があります.
requestFocusと
:指定したviewまたはそのサブクラスにフォーカスを強制的に設定します.android:focusableがtrueでフォーカスを取得できることを前提とします.
android:background
:背景の設定
上の基礎理論はすでにあったので,次にどのように実際に話しますか.
フォーカスの問題を処理するアクション:
一.
Android独自の方法を採用し、焦点の上下左右を直接制御します.
しかし、この方法の前提は、各viewのidを知らなければならないことです.よく使われるシーン:XMLにはbuttonが山積みになっていて、大きさが異なり、システムの自己制御フォーカスを使用すると、私たちが望んでいる上下左右ではないかもしれません.フォーカスをその位置に快適に到達させることができません.そのため、
上下左右キーを押して到着:IDはview_idのview、このviewは
android:focusable
="true"
したがってjavaではviewを通過する.setId(…)はviewの特定IDを指定し、viewを通過する.setNextLeftView(…)など4つの方法でこのviewの上下左右移動後に到達するviewを制御する.
しかし、この方法は、IDが設定されているシーンにのみ適用され、ダイナミックレイアウトのシーンには適用されません.
これは焦点運動ルートを変更し、実際の焦点がどのようにユーザーに研究されるかを見ることができます.この時、焦点の問題を監視し、背景色をタイムリーに修正する必要があります.
各Viewに対してフォーカスキャプチャ実績を設定する必要があります(
setOnFocusChangeListener
)をクリックします.
ビューを傍受する以外は
setOnFocusChangeListenerは、リモコンの上下左右のボタンをリスニングすることもできます.
TVアプリ開発と一般的なAndroid開発の最大の違いはフォーカス制御であり、ユーザーがAndroid TV機器を使用して主にリモコンでアプリを操作する
トップボックスのTVアプリケーションは携帯電話アプリケーションとは異なり、タッチスクリーンがないものが多く、リモコンに頼るしかないため、焦点の位置を維持し、現在の操作作用の対象をユーザーに知らせる.しかし、いくつかのappは、focusに対するシステムの判断に基づいて、
表示される状況:上下ナビゲーション時、所望の結果ではない.エッジが移動すると、フォーカスが失われる場合がある.ある位置に直接位置決めしたい場合があります
Androidはいくつかのフォーカス関連属性を提供し、既存のフレームワーク層の下でViewの属性を設定することでフォーカスを得る
android:focusable
:コントロールがフォーカスを得ることができるかどうかを設定します(TV開発では、この必須の1つで、コントロールのデフォルトはfocusがありません)
フォーカス制御では、Androidには独自のフォーカス移動軌跡があり、システムの軌跡に従ってフォーカスを移動したくない場合は、次の4つのオプションでフォーカスを指定する必要があります.
android:nextFocusDown:
android:nextFocusUp:
android:nextFocusLeft:
android:nextFocusRight:
requestFocusと
:指定したviewまたはそのサブクラスにフォーカスを強制的に設定します.android:focusableがtrueでフォーカスを取得できることを前提とします.
android:background
:背景の設定
上の基礎理論はすでにあったので,次にどのように実際に話しますか.
フォーカスの問題を処理するアクション:
一.
Android独自の方法を採用し、焦点の上下左右を直接制御します.
しかし、この方法の前提は、各viewのidを知らなければならないことです.よく使われるシーン:XMLにはbuttonが山積みになっていて、大きさが異なり、システムの自己制御フォーカスを使用すると、私たちが望んでいる上下左右ではないかもしれません.フォーカスをその位置に快適に到達させることができません.そのため、
android:nextFocusDown="@id/view_id"
android:nextFocusUp="@id/view_id"
android:nextFocusLeft="@id/view_id"
android:nextFocusRight="@id/view_id"
上下左右キーを押して到着:IDはview_idのview、このviewは
android:focusable
="true"
したがってjavaではviewを通過する.setId(…)はviewの特定IDを指定し、viewを通過する.setNextLeftView(…)など4つの方法でこのviewの上下左右移動後に到達するviewを制御する.
しかし、この方法は、IDが設定されているシーンにのみ適用され、ダイナミックレイアウトのシーンには適用されません.
これは焦点運動ルートを変更し、実際の焦点がどのようにユーザーに研究されるかを見ることができます.この時、焦点の問題を監視し、背景色をタイムリーに修正する必要があります.
各Viewに対してフォーカスキャプチャ実績を設定する必要があります(
setOnFocusChangeListener
)をクリックします.
View.setOnFocusChangeListener(){
public void onFocus(boolean Focus){
if( Focus ){
View.setBackground(R.color.green); // View ,View , View
} else{
View.setBackground(R.color.while); // View , View , View
}
}
ビューを傍受する以外は
setOnFocusChangeListenerは、リモコンの上下左右のボタンをリスニングすることもできます.
public void OnKeyDown(int keyCode, KeyEvent keyEvent){
if( keyEvent.KEYCODE_DROP_UP== keyCode ){ //
mImgBtnArray1[ThirdIndx ].requestFocus;
}
if( keyEvent.KEYCODE_DROP_DOWN == keyCode ){ //
mImgBtnArray3[ ThirdIndx ].requestFocus;
}
if( keyEvent.KEYCODE_DROP_LEFT == keyCode ){ //
mImgBtnArray1[ ThirdIndx-1 ].requestFocus;
}
if( keyEvent.KEYCODE_DROP_RIGHT == keyCode ){ //
mImgBtnArray1[ ThirdIndx+1 ].requestFocus;
}
}