myc_100 2012-12-14 09:59 采纳率: 10%
浏览 4523
已采纳

当试图被设置成动画形式时,为什么setVisibility不能执行?

TextView为什么变得不可见?
layout xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
    android:id="@+id/tvRotate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Rotate Me"
/>
</LinearLayout>

Activity:

public class RotateMeActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tvRotate = (TextView) findViewById(R.id.tvRotate);

        RotateAnimation r = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        r.setDuration(0);
        r.setFillAfter(true);
        tvRotate.startAnimation(r);
        tvRotate.setVisibility(View.INVISIBLE);
    }
}

我想实现的功能是能让试图能旋转,然后可以隐藏,通过设置setVisibility可以在代码中显示出来。在API Level 11中setRotation是可以实现的,但是在API Level 10中就不行。什么原因呢?

tvRotate.setRotation(180);//instead of the RotateAnimation, only works in API Level 11
tvRotate.setVisibility(View.INVISIBLE);
  • 写回答

2条回答

  • myq_26 2012-12-17 02:11
    关注

    另外一个解决方案是,在另一个view中隐藏动画视图,设置隐藏了的视图的可见性。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical" >
        <FrameLayout 
            android:id="@+id/animationHoldingFrame"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                 android:id="@+id/tvRotate"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="Rotate Me"
            />
        </FrameLayout>
    </LinearLayout>
    

    代码然后变成这样:

    TextView tvRotate = (TextView) findViewById(R.id.tvRotate);
    FrameLayout animationContainer = (FrameLayout)findViewById(R.id.animationHoldingFrame)
    
    RotateAnimation r = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    r.setDuration(0);
    r.setFillAfter(true);
    tvRotate.startAnimation(r);
    animationContainer.setVisibility(View.INVISIBLE);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮