Android中的模型跟随/取消关注按钮

时间:2014-07-04 16:10:32

标签: android button layout interface drawable

如何在Android中建模关注/取消关注按钮? State List Drawable我在寻找什么?如何定义两种不同的状态?

2 个答案:

答案 0 :(得分:1)

这在很大程度上取决于您想要达到的视觉效果。

首先,基础知识(我假设你已经知道了这一点):你需要一个ButtonsetOnClickListener()用于切换状态的监听器,以及一个保存它的地方(本地数据库,你的自己的服务器,或其他什么)。

最简单,最不吸引人的方法就是只要在"关注"之后切换按钮上的文字。状态更改(在单击侦听器中使用setText())。

可能的改进是拥有不同的按钮背景,因此外观也会发生变化(例如,从灰色星形变为黄色星形)。为此,您只需在点击监听器中调用setBackground()

对于更高级的效果,您可以使用TransitionDrawable来交叉淡化此更改。然后startTransition()reverseTransition()将用于两个状态更改。例如:

Drawable d1 = getResources().getDrawable(R.drawable.follow_button);
Drawable d2 = getResources().getDrawable(R.drawable.unfollow_button);
final TransitionDrawable followDrawable = new TransitionDrawable(new Drawable[] { d1, d2 });
final int transitionDuration = getResources().getInteger(android.R.integer.config_shortAnimTime);

button.setBackground(followDrawable);

button.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        if (!mFollowing)
        {
            mFollowing = true;
            followDrawable.startTransition(transitionDuration);
        }
        else
        {
            mFollowing = false;
            followDrawable.reverseTransition(transitionDuration);
        }
    }
});

答案 1 :(得分:0)

首先,您需要保存您的州。无论是“跟随”还是“取消关注”。保存位置取决于您的应用程序逻辑。

然后,根据当前状态,您可以更新按钮的外观。 StateListDrawable的作用是,它根据状态更新按钮的背景,无论是“聚焦”,“选择”等等。

您可以使用State List Drawable作为按钮的背景。然后,如果当前状态为“follow”,则将按钮设置为选中(vis Button.setSelected(true))。如果当前状态为“取消关注”,则表示正常。 (Button.setSelected(假)。

<item android:drawable="@drawable/bg_for_follow" android:state_selected="true" />
<item android:drawable="@drawable/bg_for_unfollow" />

像这样的东西。在上面的示例中,如果将该可绘制文件设置为按钮的背景,则当按钮状态为“已选中”时,它将使用“bg_for_follow”;当按钮状态正常时,它将使用“bg_for_unfollow”。

希望可以提供帮助。