2

私は現在、Lollipop より下の Android API レベルで動作する疑似円形の公開を試みています。そのため、(押されたときに) RelativeLayout に垂直に移動し (クリックする前に RelativeLayout の外側に位置する)、特定の倍率でスケーリングして、明らかに見えるようにするフローティング アクション ボタン (FAB) があります。

FAB で .setClipBounds() を使用すると、RelativeLayout の領域のスケール アニメーションが制限されると思いましたが、残念ながら、スケール アニメーションが拡大してアクティビティ領域全体を占有します。これは、FAB のクリック リスナーのコードです。

 circleFab.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                int cardHeight = relativeCardBuild.getHeight();
                int cardWidth = relativeCardBuild.getWidth();

                Log.i("RELAT H", "" + cardHeight);
                Log.i("RELAT W", "" + cardWidth);

                circleFab
                        .animate()
                        .translationY(-(cardHeight / 2))
                        .setInterpolator(new AccelerateDecelerateInterpolator())
                        .setDuration(200).start();
                tickFab.animate().alpha(0.0f).setDuration(200).start();

                circleFab.setClipBounds(new Rect(relativeCardBuild.getLeft(),
                        relativeCardBuild.getTop(), relativeCardBuild
                                .getRight(), relativeCardBuild.getBottom()));

                Log.i("left ", relativeCardBuild.getLeft()+"");
                Log.i("top ", relativeCardBuild.getTop()+"");
                Log.i("right ", relativeCardBuild.getRight()+"");
                Log.i("bottom ", relativeCardBuild.getBottom()+"");

                circleFab.animate().setStartDelay(100).scaleX(20.0f)
                        .scaleY(20.0f).setDuration(500).start();

            }
        });

relativeCardBuild の左、上、右、および下のポイントのログに記録された値は正しいので、実際に circleFab レイアウト (楕円形のドローアブルとビットマップのドローアブルを含む FrameLayout) のクリップ境界を正しく設定しています。それでも、スケール アニメーションはアクティビティ画面全体を占めます。

このインスタンスで .setClipBounds() が何をするかを完全に誤解していますか?

4

0 に答える 0