两年没写过了,这两年我都干了些啥。。。。。
项目需求,要做一个头像滑动切换( demo源码在 http://git.oschina.net/agilest/gallary-demo),android刚接触,不是很熟悉,网上看了有很多类似仿iOS CoverFlow的组件(http://www.oschina.net/p/android-coverflow)。看了一下效果跟我要的差不多一致,就是当前图片正面显示,左右两侧的Y轴旋转。但是这个demo在滑动后Y轴旋转角度貌似有点麻烦(又是计算中心点,又是各种加减乘除),同时好像还有bug(滑动过快会导致正负出现计算错误)。研究了一番,发现其实很简单,左侧的图片旋转80度,右侧的图片旋转-80度,只要找到每一张的前一张(往左侧滑动时左侧那张)和下一张(往左侧滑动时右侧那张),然后让他们分别延Y轴旋转80盒-80就可以了,如何找到这两张呢?其实很简单:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = mImages[position % mImages.length];
i.setTag(position);
return i;
}
给每个ImageView设置一个tag,
然后在滑动时判断tag的值就可以了:
protected boolean getChildStaticTransformation(View child, Transformation t) {
t.clear();
t.setTransformationType(Transformation.TYPE_MATRIX);
int childIndex = Integer.parseInt(child.getTag().toString());
int currentIndex = Integer.parseInt(this.getSelectedView().getTag().toString());
if(childIndex==currentIndex){
transformImageBitmap((ImageView) child,t,0);
}else if(childIndex<currentIndex){
transformImageBitmap((ImageView) child,t,mMaxRotationAngle);
}else{
transformImageBitmap((ImageView) child,t,-mMaxRotationAngle);
}
return true;
}