Как рассчитать, какой вид занимает более половины экрана - PullRequest
0 голосов
/ 17 октября 2018

У меня есть recyclerview с 3 собственными представлениями.RV можно прокручивать по горизонтали, а ширина каждого вида равна ширине экрана.Я хочу показать, какой вид отображается в данный момент (какой вид занимает более половины экрана).Как это сделать?

MainScreenActivity.class

public class MainScreenActivity extends BaseActivity implements View.OnClickListener, MainScreenView {
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mRecyclerView = findViewById(R.id.recycler_view);
        mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mAdapter);
    }
}

MyAdapter.class

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private List<ChartDefiner> chartDefiners;
    private DataView dataView;

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        ChartView chartView;

        public MyViewHolder(ChartView chartView) {
            super(chartView);
            this.chartView = chartView;
        }
    }

    public MyAdapter(List<ChartDefiner> chartDefiners, DataView dataView) {
        this.chartDefiners = chartDefiners;
        this.dataView = dataView;
    }

    @Override
    public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        ChartView v = (ChartView) LayoutInflater.from(parent.getContext()).inflate(R.layout.chart_layout, parent, false);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.chartView.initData();
    }


    @Override
    public int getItemCount() {
        return chartDefiners.size();
    }

1 Ответ

0 голосов
/ 17 октября 2018

В моем приложении реализована базовая анимация прокрутки.Я использовал этот кусок кода, и он прекрасно работает.

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, 
LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(linearLayoutManager);




 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        switch (newState) {

            case RecyclerView.SCROLL_STATE_SETTLING:
               currentItemPosition=linearLayoutManager.findFirstCompletelyVisibleItemPosition();
 }
    }
...