Android TV上下翻屏

  • 效果
  • 控件类ScrollLinearLayout
  • ScrollLinearLayoutActivity代码
  • activity_scroll_linear_layout代码
  • 其它

效果


初始化页面,用户将光标移动到BUTTON3上,并向上移动焦点。就切换屏幕,下图:

控件类ScrollLinearLayout

继承LinearLayout,ScrollLinearLayout.java代码如下:

import android.content.Context;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.widget.LinearLayout;import android.widget.Scroller;public class ScrollLinearLayout extends LinearLayout {    private Scroller scroller;    public ScrollLinearLayout(Context context) {        this(context, null);    }    public ScrollLinearLayout(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);        scroller = new Scroller(context);    }    public void startScroll(int y) {        scroller.startScroll(0, getScrollY(), 0, y);        invalidate();    }    @Override    public void computeScroll() {        //判断是否滚动完成        if (scroller.computeScrollOffset()) {            scrollTo(scroller.getCurrX(), scroller.getCurrY());        }    }}

ScrollLinearLayoutActivity代码

ScrollLinearLayoutActivity.java代码如下:

import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.KeyEvent;import android.widget.Button;import com.cc.demo.R;public class ScrollLinearLayoutActivity extends AppCompatActivity {    private ScrollLinearLayout scrollLinearLayout;    private Button btn2;    private Button btn3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_scroll_linear_layout);        //按照720P的绝对值布局进行测试的。        scrollLinearLayout = (ScrollLinearLayout) findViewById(R.id.svg);        btn2 = (Button) findViewById(R.id.btn2);        btn3 = (Button) findViewById(R.id.btn3);        btn3.requestFocus();    }    @Override    public boolean dispatchKeyEvent(KeyEvent event) {        if (event.getAction() == KeyEvent.ACTION_DOWN) {            switch (event.getKeyCode()) {                case KeyEvent.KEYCODE_DPAD_UP:                    if (btn3.isFocused()) {                        scrollLinearLayout.startScroll(-600);                    }                    break;                case KeyEvent.KEYCODE_DPAD_DOWN:                    if (btn2.isFocused()) {                        scrollLinearLayout.startScroll(600);                    }                    break;            }        }        return super.dispatchKeyEvent(event);    }}

activity_scroll_linear_layout代码

activity_scroll_linear_layout.xml 代码如下:

<?xml version="1.0" encoding="utf-8"?>    

其它

  • 根据具体的需求,TV上翻屏也可以用ScrollView来实现。
  • Android TV上的ScrollView和HorizontalScrollView是可以直接使用。和触摸屏上一样。
  • Android TV上也可以正常使用RecyclerView,焦点可能会存在小问题,上拉加载更多和下拉刷新需要自己实现。建议使用开源库TvRecyclerView。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)动态菜单实现实例代码
  3. Android(安卓)获取控件高度宽度三种方法
  4. android 控件在不同状态下的内容样式与背景样式
  5. android 源代码版本号整理
  6. Hello, Android(安卓)深入(二)
  7. Android获取当前进程名
  8. android 如何判断开机完成
  9. Android获取屏幕大小 .

随机推荐

  1. 图文详解MySQL中的主键与事务
  2. 跳槽必备之你设计索引的原则是什么?怎么
  3. 一看就懂的MySQL的聚簇索引及聚簇索引是
  4. MySQL之PXC集群搭建的方法步骤
  5. Mysql 用户权限管理实现
  6. MySQL 查询速度慢的原因
  7. MySQL 全文索引使用指南
  8. 52条SQL语句教你性能优化
  9. 简单了解 MySQL 中相关的锁
  10. mysql在项目中怎么选事务隔离级别