2017-05-02 6 views
1

스크롤 :사용자가이 같은 UI와 TV 애플리케이션에 필요한 안드로이드에 TV

UI prototype

원격 영상 정보에/다운 버튼까지 누르면 붕괴되어야한다, 다음 그리드 스크롤해야 그 후에 새로운 비디오 정보가 확장되어야합니다.

각 라인은 별도로로드되며 자체 페이지 매김이 있습니다.

ScrollViewRecyclerViews으로 구현했습니다. 그러나 애니메이션은 부드럽게 진행되지 않습니다. ScrollView이 조금 먼저 스크롤 된 다음 내 맞춤 애니메이션이 시작됩니다. 위/아래 버튼에서 스크롤을 억제하고 클릭하여 수동으로 처리하고 싶습니다. 나는 ScrollView 자손을 만들고 이것을 위해 무언가를 무효화하려했습니다.

public class VideoSelector extends ScrollView { 
    public VideoSelector(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setVerticalScrollBarEnabled(false); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     return true; 

    } 

    @Override 
    public boolean canScrollVertically(int direction) { 
     return false; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     DPLog.i("ScrollView onTouchEvent: %s", event.toString()); 
     return super.onTouchEvent(event); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     DPLog.i("ScrollView key down: %s", event.toString()); 
     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
     DPLog.i("ScrollView key up: %s", event.toString()); 
     return super.onKeyUp(keyCode, event); 
    } 
} 
작동하지 않습니다

, onKeyUp 또는 onKeyDown가 호출되지 않습니다.

키 이벤트를 잡는 유일한 방법은 onKeyDownActivity에 다시 정의하는 것입니다. 이 함수를 fine이라고합니다. 그러나 그것은 추한 해결책으로 보인다. TV 앱의보기에서 리모컨의 주요 이벤트를 처리하려면 어떻게해야합니까?

린 (leanback) 컨트롤로 이러한 UI를 만들 수 있습니까?

답변

0

ObersvableScrollView를 사용해 볼 수 있습니다. onScrollChanged()에서 콜백 리스너를 설정합니다 (아래 설명 참조). UI를 업데이트합니다. 또한 액티비티의 onKeyDown 이벤트에서 observalbeScrollView를 원하는 y 위치로 스크롤 할 수 있습니다. observableScrollView.scrollVerticallyTo는 (100)

observableScrollView.setScrollViewCallbacks(new ObservableScrollViewCallbacks() { 
       @Override 
       public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) { 

       } 

       @Override 
       public void onDownMotionEvent() { 

       } 

       @Override 
       public void onUpOrCancelMotionEvent(ScrollState scrollState) { 

       } 
      }); 
0

당신은 편안한 감상 API의 BrowseFragment 구성 요소를 사용할 수 있습니다. onItemSelected()와 같은 콜백 메서드가 있습니다. 선택한 항목의 위치와 데이터를 가져올 수 있으므로 정보를 쉽게 표시 할 수 있습니다.