一、 将CoverFlow这个库导入到工程中,调整一下版本。
二、布局中使用FancyCoverFlow的控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00bbff">
<com.dalong.francyconverflow.FancyCoverFlow
android:id="@+id/fancy_cover_flow_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
</RelativeLayout>
三、设置适配器
//为FancyCoverFlow设置适配器
FindFancyCoverFlowAdapter findFancyCoverFlowAdapter = new FindFancyCoverFlowAdapter(this, pictures);
fancy_cover_flow_main.setAdapter(findFancyCoverFlowAdapter);
findFancyCoverFlowAdapter.notifyDataSetChanged();
适配器类(和viewPager很像):
public class FindFancyCoverFlowAdapter extends FancyCoverFlowAdapter {
private final Context mContext;
private final int[] mPictures;
public FindFancyCoverFlowAdapter(Context context, int[] pictures) {
mContext = context;
mPictures = pictures;
}
@Override
public View getCoverFlowItem(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(mContext, R.layout.item_fancy_cover_flow, null);
//设置显示图片所占宽度
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
convertView.setLayoutParams(new FancyCoverFlow.LayoutParams(width * 2 / 3, FancyCoverFlow.LayoutParams.WRAP_CONTENT));
holder.iv_item = (ImageView) convertView.findViewById(R.id.iv_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//获取当前条目的数据
int mPicture = mPictures[position % mPictures.length];
//设置数据
holder.iv_item.setImageResource(mPicture);
return convertView;
}
@Override
public int getCount() {
return 1000;
}
@Override
public Object getItem(int position) {
return mPictures[position];
}
@Override
public long getItemId(int position) {
return position;
}
static class ViewHolder {
ImageView iv_item;
}
}
四、最后调整一下效果就可以了
//设置参数
fancy_cover_flow_main.setUnselectedAlpha(0.5f);//未被选中时的透明度
fancy_cover_flow_main.setUnselectedSaturation(0.5f);//设置未被选中的饱和度
fancy_cover_flow_main.setUnselectedScale(0.2f);//设置未被选中所占的比例
fancy_cover_flow_main.setSpacing(-130);//设置child间距
fancy_cover_flow_main.setMaxRotation(0);//设置最大旋转度数
fancy_cover_flow_main.setScaleDownGravity(0.5f);//非选中的重心偏移,负的向上
fancy_cover_flow_main.setActionDistance(FancyCoverFlow.ACTION_DISTANCE_AUTO);//作用距离
//设置从第一张图片开始显示
int num = 1000 / 2 % pictures.length;
int selectPosition = 1000 / 2 - num;
fancy_cover_flow_main.setSelection(selectPosition);