在Sliding Up Panel中旋转ImageView

时间:2015-02-22 14:52:26

标签: android android-activity android-fragments android-animation android-sliding

在我的Android应用程序中,我使用了 umano的向上滑动面板(点击here

我想扭转(旋转)ImageView,如下图所示。 ImageView的更改取决于面板打开的距离。是否可以通过滑动面板来扭转(旋转)ImageView?

以下是slideOffset显示打开了多少面板的方法,但我不知道在我的情况下如何正确使用它来旋转ImageView。顺便说一下,我使用slideOffset通过滑动面板逐渐改变颜色。

@Override
public void onPanelSlide(View panel, float slideOffset) {
       Log.i(TAG, "onPanelSlide, offset " + slideOffset);

       //Here is the code which change titleBar color gradually
       titleBar.setBackgroundColor((int) colorEvaluator.evaluate(slideOffset, Color.parseColor("#03A9F4"), Color.parseColor("#F44336")));

}

enter image description here

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

应该可以。

你需要做的是检查slideOffset的初始值和最终值 - 我希望它在开始时为0,然后可能是屏幕的高度。

如果是这种情况,那么你应该能够使用一个简单的比例方程计算旋转角度:

@Override
public void onPanelSlide(View panel, float slideOffset) {
       Log.i(TAG, "onPanelSlide, offset " + slideOffset);

       //Here is the code which change titleBar color gradually
       titleBar.setBackgroundColor((int) colorEvaluator.evaluate(slideOffset, Color.parseColor("#03A9F4"), Color.parseColor("#F44336")));

    float angle = slideOffset * 180 / slideOffsetMax;
    imageView.setRotation(angle);

}

答案 1 :(得分:2)

试试这个,它肯定会根据您的要求旋转您的图像: -

@Override
            public void onPanelSlide(View panel, float slideOffset) {

                Log.i(TAG, "onPanelSlide, offset " + slideOffset);

                float angle = slideOffset * 180;
                mImageViewArrow.setRotation(angle);

            }