MaterialLeanBack

介绍:

我也不知道LeanBack是什么东西,不过目测里面有点用的就是那个用recyclerView实现的画廊效果。

运行效果:

使用说明:

布局

<com.github.florent37.materialleanback.MaterialLeanBack
        android:id="@+id/materialLeanBack"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:mlb_background="@color/background"
        app:mlb_lineSpacing="30dp"
        app:mlb_paddingBottom="30dp"
        app:mlb_paddingLeft="30dp"
        app:mlb_paddingRight="30dp"
        app:mlb_paddingTop="40dp"
        app:mlb_titleColor="@android:color/white" />

在activity/fragment中

materialLeanBack.setAdapter(new MaterialLeanBack.Adapter<TestViewHolder>() {
            @Override
            public int getLineCount() {
                return 10;
            }
            @Override
            public int getCellsCount(int line) {
                return 10;
            }
            @Override
            public TestViewHolder onCreateViewHolder(ViewGroup viewGroup, int line) {
                View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cell_test, viewGroup, false);
                return new TestViewHolder(view);
            }
            @Override
            public void onBindViewHolder(TestViewHolder viewHolder, int i) {
                viewHolder.textView.setText("test " + i);
                String url = "http://www.lorempixel.com/40" + viewHolder.row + "/40" + viewHolder.cell + "/";
                Picasso.with(viewHolder.imageView.getContext()).load(url).into(viewHolder.imageView);
            }
            @Override
            public String getTitleForRow(int row) {
                return "Line " + row;
            }
        });

可用的属性 

<com.github.florent37.materialleanback.MaterialLeanBack
        android:id="@+id/materialLeanBack"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:mlb_lineSpacing="30dp"
        app:mlb_paddingTop="40dp"
        app:mlb_paddingBottom="30dp"
        app:mlb_paddingLeft="30dp"
        app:mlb_paddingRight="30dp"
        app:mlb_background="@color/background"
        app:mlb_backgroundOverlay="0.5"
        app:mlb_backgroundOverlayColor="#333"
        app:mlb_titleColor="@android:color/white"
        app:mlb_titleSize="15sp"
        app:mlb_overlapCards="true"
        app:mlb_animateCards="true"
        app:mlb_cardElevationEnlarged="10"
        app:mlb_cardElevationReduced="5"
        />

添加自定义view

materialLeanBack.setAdapter(new MaterialLeanBack.Adapter<TestViewHolder>() {
    ...usual methods...
    public RecyclerView.ViewHolder getCustomViewForRow(ViewGroup viewgroup, int row) {
        if (row == 3) {
            View view = LayoutInflater.from(viewgroup.getContext()).inflate(R.layout.header, viewgroup, false);
            return new RecyclerView.ViewHolder(view) {
            };
        } else
            return null;
    }
    @Override
    public boolean isCustomView(int row) {
        return row == 3;
    }
    @Override
    public void onBindCustomView(RecyclerView.ViewHolder viewHolder, int row) {
        super.onBindCustomView(viewHolder, row);
    }
}

下载

在module中

compile 'com.github.florent37:materialleanback:1.0.0@aar'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.nineoldandroids:library:2.4.0'

已下载
0