Android 在向上滑动面板中旋转ImageView

Android 在向上滑动面板中旋转ImageView,android,android-activity,android-fragments,android-animation,android-sliding,Android,Android Activity,Android Fragments,Android Animation,Android Sliding,在我的android应用程序中,我使用了umano的向上滑动面板点击 我尝试旋转图像视图,如下图所示。ImageView的更改取决于面板打开的距离。是否可以通过滑动面板来旋转图像视图 这里是slideOffset显示面板打开多少的方法,但我不知道如何在我的例子中正确使用它来旋转ImageView。顺便说一下,我使用slideOffset通过滑动面板逐渐改变颜色 @Override public void onPanelSlide(View panel, float slideOffset) {

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

我尝试旋转图像视图,如下图所示。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")));

}
谢谢你的帮助

这应该是可能的

你需要做的是检查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);

}
这应该是可能的

你需要做的是检查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);

}

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

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

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

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

            }

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

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

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

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

            }

你好,杰克!你好吗不幸的是,它没有起作用。ImageView没有改变。我用slideOffsetMax=的不同值进行了测试,尝试设置一个任意值,比如90,作为角度,看看图像是否会旋转;mImageView.setRotationangle;但它会立即旋转ImageView,而且只能以一种方式旋转,但旋转必须逐渐进行,这取决于面板打开的距离,正如我所说的。我忘了问的另一个问题是,当用户关闭面板时,将ImageView返回到第一个位置。您对此有什么想法吗?您应该能够使用setRotation0将ImageView旋转到其初始位置。至于旋转的问题,您选择的slideOffsetMax似乎有问题。它应该是slideOffset可以采用的最高值,以便在屏幕顶部的角度等于180。这有意义吗?你好,杰克!你好吗不幸的是,它没有起作用。ImageView没有改变。我用slideOffsetMax=的不同值进行了测试,尝试设置一个任意值,比如90,作为角度,看看图像是否会旋转;mImageView.setRotationangle;但它会立即旋转ImageView,而且只能以一种方式旋转,但旋转必须逐渐进行,这取决于面板打开的距离,正如我所说的。我忘了问的另一个问题是,当用户关闭面板时,将ImageView返回到第一个位置。您对此有什么想法吗?您应该能够使用setRotation0将ImageView旋转到其初始位置。至于旋转的问题,您选择的slideOffsetMax似乎有问题。它应该是slideOffset可以采用的最高值,以便在屏幕顶部的角度等于180。这有意义吗?天哪,太简单了。谢谢你!你不需要1除法,没有它也行。哦,天哪,这太容易了。谢谢你!你不需要除以1,没有它也行。