Android 自定义属性 attribute 多种类型的处理 fraction|dimension

谷歌源码

 @NonNull
  private static CornerSize getCornerSize(
      TypedArray a, int index, @NonNull CornerSize defaultValue) {
    TypedValue value = a.peekValue(index);
    if (value == null) {
      return defaultValue;
    }

    if (value.type == TypedValue.TYPE_DIMENSION) {
      // Eventually we might want to change this to call getDimension() since corner sizes support
      // floats.
      return new AbsoluteCornerSize(
          TypedValue.complexToDimensionPixelSize(value.data, a.getResources().getDisplayMetrics()));
    } else if (value.type == TypedValue.TYPE_FRACTION) {
      return new RelativeCornerSize(value.getFraction(1.0f, 1.0f));
    } else {
      return defaultValue;
    }
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容