Code example for Transformation

Methods: clear, getMatrix, setTransformationType

0
    protected boolean getChildStaticTransformation(View child, Transformation t) {
        final int center = getCenterOfView(child);
        final int width = child.getWidth();
        int angle = 0;
 
        t.clear();
        t.setTransformationType(Transformation.TYPE_MATRIX);
 
        if (center == mCoveflowCenter) {
            this.transformImageBitmap((ImageView) child, t, 0);
 
        } else { 
            angle = (int) (((float) (this.mCoveflowCenter - center) / width) * this.mMaxRotationAngle);
            if (Math.abs(angle) > this.mMaxRotationAngle) {
                angle = (angle < 0) ? -this.mMaxRotationAngle : this.mMaxRotationAngle;
            } 
//Log.d("CoverFlowGallery", "angle: " + angle + ", mCoveflowCenter: " + mCoveflowCenter + ", center: " + center + ", width: " + width + ", mMaxRotationAngle: " + mMaxRotationAngle); 
 
            this.transformImageBitmap((ImageView) child, t, angle);
        } 
 
        return true; 
    } 
 
    /** 
     * 回転時の最大角度を取得します。 
     *  
     * @return 角度。 
     */ 
    public int getMaxRotationAngle() { 
        return this.mMaxRotationAngle;
    } 
 
    /** 
     * 回転時の最大角度を設定します。 
     *  
     * @param angle 角度。 
     */ 
    public void setMaxRotationAngle(int angle) {
        this.mMaxRotationAngle = angle;
    } 
 
    /** 
     * 拡大率を取得します。 
     *  
     * @return 拡大率。 
     */ 
    public int getMaxZoom() { 
        return this.mMaxZoom;
    } 
 
    /** 
     * 拡大率を設定します。 
     *  
     * @param zoom 拡大率。 
     */ 
    public void setMaxZoom(int zoom) {
        this.mMaxZoom = zoom;
    } 
 
    /** 
     * コントロールのサイズが変更された時に発生します。 
     *  
     * @param w 現在の幅。 
     * @param h 現在の高さ。 
     * @param oldw サイズが変更される前の幅。 
     * @param oldh サイズが変更される前の高さ。 
     */ 
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        this.mCoveflowCenter = this.getCenterOfCoverflow();
        super.onSizeChanged(w, h, oldw, oldh);
    } 
 
    /** 
     * 画像を変形させます。 
     *  
     * @param child 画像の描画領域となる View。 
     * @param t 変形情報。 
     * @param angle 変形させる角度。 
     */ 
    private void transformImageBitmap(ImageView child, Transformation t, int angle) {
        this.mCamera.save();
 
        final Matrix matrix = t.getMatrix();
        final int imageHeight = child.getLayoutParams().height;
        final int imageWidth = child.getLayoutParams().width;
        final int rotation = Math.abs(angle);
 
        this.mCamera.translate(0.0f, 0.0f, 100.0f);