返回

用View小工具消除Button讨厌的阴影

Android

作为一名Android开发者,我非常喜欢Android 5.0以上的Button默认自带的阴影效果。它增加了立体感和视觉效果,让用户界面更具吸引力。然而,最近,我们的产品经理给我提出了一个挑战:“跟IOS一样!”。好吧,这可苦了我们这些Android开发者,因为iOS没有这样的阴影效果。为了满足产品要求,我开始了去除阴影的征程。

解决这个问题的方法有很多,但经过一番研究,我发现使用View小工具是最简单、最有效的方法。让我来分享一下我是如何做到的。

首先,我们需要创建一个自定义View小工具类,它将覆盖Button的默认绘制行为。在这个类中,我们需要覆盖onDraw()方法,并使用Canvas.drawXXX()方法来绘制Button的背景、边框和文字。在绘制过程中,我们需要注意避免使用Canvas.drawShadow()方法,因为它会创建阴影效果。

public class CustomButton extends View {

    private Paint paint;

    public CustomButton(Context context) {
        super(context);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setColor(Color.WHITE);
        paint.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // 绘制背景
        canvas.drawRect(0, 0, getWidth(), getHeight(), paint);

        // 绘制边框
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(2);
        canvas.drawRect(0, 0, getWidth(), getHeight(), paint);

        // 绘制文字
        paint.setStyle(Paint.Style.FILL);
        canvas.drawText("Button", getWidth() / 2, getHeight() / 2, paint);
    }
}

创建好自定义View小工具类后,我们需要在XML布局文件中使用它。只需将Button标签替换为我们的CustomButton标签即可。

<com.example.myapplication.CustomButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

现在,运行你的应用程序,你会发现Button的阴影效果已经消失了。

使用View小工具来消除Button的阴影效果是一种简单而有效的方法。这种方法不仅可以满足产品要求,还可以让我们更好地控制Button的外观。希望这个教程对你有帮助。