Exemplo n.º 1
0
 /** 刷新所有图片的显示状态,包括当前的旋转角度。 */
 private void refreshImageShowing() {
   for (int i = 0; i < mItems.length; i++) {
     Image3DView childView = (Image3DView) getChildAt(mItems[i]);
     childView.setRotateData(i, getScrollX());
     childView.invalidate();
   }
 }
Exemplo n.º 2
0
 @Override
 protected void onLayout(boolean changed, int l, int t, int r, int b) {
   if (changed || forceToRelayout) {
     mCount = getChildCount();
     // 图片数量必须大于5,不然无法正常显示
     if (mCount < 5) {
       return;
     }
     mWidth = getMeasuredWidth();
     mHeight = getMeasuredHeight();
     // 每张图片的宽度设定为控件宽度的百分之六十
     mImageWidth = (int) (mWidth * 0.6);
     if (mCurrentImage >= 0 && mCurrentImage < mCount) {
       mScroller.abortAnimation();
       setScrollX(0);
       int left = -mImageWidth * 2 + (mWidth - mImageWidth) / 2;
       // 分别获取每个位置上应该显示的图片下标
       int[] items = {
         getIndexForItem(1),
         getIndexForItem(2),
         getIndexForItem(3),
         getIndexForItem(4),
         getIndexForItem(5)
       };
       mItems = items;
       // 通过循环为每张图片设定位置
       for (int i = 0; i < items.length; i++) {
         Image3DView childView = (Image3DView) getChildAt(items[i]);
         childView.layout(left + IMAGE_PADDING, 0, left + mImageWidth - IMAGE_PADDING, mHeight);
         childView.initImageViewBitmap();
         left = left + mImageWidth;
       }
       refreshImageShowing();
     }
     forceToRelayout = false;
   }
 }
Exemplo n.º 3
0
 /** 回收所有图片对象,释放内存。 */
 public void clear() {
   for (int i = 0; i < mCount; i++) {
     Image3DView childView = (Image3DView) getChildAt(i);
     childView.recycleBitmap();
   }
 }