java setclipchildren - 親ビューの外に出るとAndroidビューが消える



not working (6)

try to update camera position as in my case below:
 ValueAnimator lockAnimator = ValueAnimator.ofFloat(1, 0);     // value from 0 to 1
                lockAnimator.setDuration(500);
                lockAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator pAnimation) {
                        float value = (Float) (pAnimation.getAnimatedValue());
                        if (value < .6 && flipped) {
                            if (preview != null)
                                mCanvasImage.setImageBitmap(preview);
                            else
                                mCanvasImage.setImageBitmap(imageBitmap);
                            flipped = false;
                        }
                        if (value > .3 && value < .7) {
                            lyt_rlt_container.setCameraDistance(lyt_rlt_container.getCameraDistance() - 100);
                        } else {
                            lyt_rlt_container.setCameraDistance(lyt_rlt_container.getCameraDistance() + 100);
                        }
                        lyt_rlt_container.setRotationY(180 * value);

                    }
                });
                lockAnimator.start();

私はこのLinearLayoutの中にLinearLayoutとImageViewを持っています。

ImageViewの翻訳エフェクトがあります。

// v = ImageView    
ObjectAnimator animation2 = ObjectAnimator.ofFloat(v, "translationY", 200);
                        animation2.setDuration(3000);
                        animation2.setTarget(v);
                        animation2.start();

アニメーションは機能しますが、ImageViewがLinearLayoutの外に出ると消えていきます。

あなたはここで問題を見ることができます: http://screenr.com/zoAH : http://screenr.com/zoAH

LinearLayoutの高さを変更せずにどのように修正できますか?


私の場合、clipChildrenは何もしませんでしたが、 clipToPadding="false"は問題を修正しました。 Go figure。


clipChildrenとclipToPaddingという2つの属性が存在する可能性があります。 オブジェクトがアニメーション化される境界を持つ各親ViewGroupに対して、clipChildrenをfalseに設定する必要があります。 あなたはまた、直接の親にclipToPaddingを設定する必要があります(そしてそれ以上のことはありますが、まだそれについてのケースは見ていません)。

両方の属性をXMLに設定できます

android:clipChildren="false"
android:clipToPadding="false"

コード内

viewGroup.setClipChildren(false);
viewGroup.setClipToPadding(false);

ビューの高さを取得し、スライドさせる場所の高さのパーセンテージを追加します

public void SlideUp(View view){
     float height = view.getHeight();

     TranslateAnimation animate = new TranslateAnimation(0,0,0,0);   

     animate.setDuration(500);
     animate.setFillAfter(true);

     view.animate().translationY((float)(0-0.62*height)).start(); 
     view.startAnimation(animate);
}

ImageViewが属するViewGroupを探し、ViewGroup.setClipChildren ViewGroup.setClipChildren(false)を適用します。 デフォルトでは、子の描画は親ViewGroupの境界に制限されています。


以下のコードを使用すると、Android OSデバイスの一意のデバイスIDを文字列として取得できます。

deviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 




java android animation android-animation