自定义Rotate3dView
本文地址,转载请注明:https://blog.youkuaiyun.com/BenjaminFFF/article/details/82828289
github地址:https://github.com/BenjaminFF/Rotate3dView
知识准备
- Android自定义ViewGroup的知识。
- Android事件传递机制。
- Android Camera。
- Android属性动画
Android Camera参考GscSloop的这篇文章。
Android属性动画参考郭霖的这篇文章。
效果:
初始化View
准备两个View,一个正面,一个反面。然后添加到Rotate3dView里面。这里模仿了RecyclerView的Adapter,思路如下:
先定义一个抽象类,里面有一些抽象方法:
public abstract static class Adapter<FrontVH extends ViewHolder,BackVH extends ViewHolder>{
public abstract FrontVH onCreateFrontViewHolder(ViewGroup parent);
public abstract void onBindFrontViewHolder(FrontVH holder);
public abstract BackVH onCreateBackViewHolder(ViewGroup parent);
public abstract void onBindBackViewHolder(BackVH holder);
......
}
public abstract static class ViewHolder{
public View itemView;
public ViewHolder(View itemView) {
this.itemView = itemView;
}
}
通过实现Adapter和它里面的这些方法,起到载入数据的作用。
然后在setAdapter里面做功夫:
private void addViewFromAdapter(){
ViewHolder frontHolder=mAdapter.CreateFrontViewHolder(this);
mAdapter.onBindFrontViewHolder(frontHolder);
ViewHolder backHolder=mAdapter.CreateBackViewHolde