6

根据问题:Android 上视图背景颜色的动画更改我试图通过TransitionDrawable资源使 TextView 在两个背景之间淡入淡出。我的过渡 xml 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/gray_bar" />
    <item android:drawable="@drawable/green_bar" />
</transition>

我尝试通过以下方式将其设置为运行时背景:

TextView answerBox = (TextView) findViewById(R.id.answerBox);
answerBox.setBackgroundResource(R.drawable.correct_transition);
TransitionDrawable transition = (TransitionDrawable) answerBox.getBackground();
transition.startTransition(1500);

结果是 textview 从此转换:

带有 gray_bar 背景的文本视图 对此: 带有 green_bar 背景的文本视图

当整个灰色条应转换为绿色条。

两者都是 9-patch png 图像。这些是原件:

gray_bar 绿条

我的猜测是绿色条正在填充灰色条内可用于文本的空间,但我不知道为什么。有什么线索吗?灰色的看起来也比它应该的大得多,但在转换之前、期间或之后不会改变大小,尽管包含的图像出现了。这可能是 9-patch 图像的问题,因为我已经测试了普通图像并且过渡效果很好。

谢谢你的帮助!

4

1 回答 1

0

我能够重现您看到的绿色条不占用灰色条的全部空间的问题。要修复它,请使用灰色条 9-patch 并将底部和右侧的线延伸到距角落一个像素的位置。

附带说明一下,您的 9-patch 的另一个潜在问题是,随着内容高度的增加,您的图像在垂直拉伸时会出现视觉伪影。这是图像左侧黑条高度的结果,它决定了 9-patch 的哪个部分应该拉伸。对这 9 个补丁的进一步改进是将左侧的黑线减少到仅位于左边缘中心的单个像素。由于只有一个像素被标记为可拉伸的,因此如果您的可绘制对象的高度增加,这应该会给您一个很好的清晰的垂直边缘。

如果您包含您的布局代码,我也许可以帮助您解决其他尺寸问题。

于 2015-05-02T05:36:48.360 回答