什么时候使用自定义视图? - Android

时间:2017-03-01 11:41:29

标签: android layout view

我正在推动我的Android游戏。我已经看到,对于游戏,开发人员应该使用自定义视图。但是为什么以及何时应该使用自定义视图而不是使用布局XML?

2 个答案:

答案 0 :(得分:1)

自定义视图在某些情况下很有用:

  • 在视觉上创造一些非平凡的东西 - 这意味着你想要自己画一些东西到屏幕上,例如图形。
  • 获得性能 - 这可能是游戏的主要原因 - 当布局深度嵌套(充气,在彼此内部布局多个视图,在布局相互重叠时过度绘制)时,布局可能会很重要,您可以解决这些问题使用自定义视图将自己吸引到屏幕上 此外,使用自定义视图,您可以使用GPU直接在屏幕上绘制内容,并具有硬件加速操作的优势。
  • 有时强制执行复杂的布局,自动调整到不同的设备大小是使用xml布局的非平凡/不可能的任务,在自定义视图中,您可以创建复杂的动态布局。

答案 1 :(得分:0)

当您从视图中有特殊要求时,基本上需要自定义视图,这在Android SDK中是不可用的。对于前者对于我的一个应用程序,我需要一个ImageView,它可以设置它的高度是它接收的宽度的1.5倍 所以我做了这个customImageView

public class CustomImageView extends ImageView {

    private static final float ASPECT_RATIO = 1.5f;

    public CustomImageView(Context context) {
        super(context);
    }

    public CustomImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = Math.round(width * ASPECT_RATIO);
        setMeasuredDimension(width, height);
    }
}