我遇到了以下问题:
我想要实现这个:
我已经做出了下面的东西:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/drawable_gold_frame">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/gold_photo"
android:layout_width="@dimen/all_time_best_photo_size"
android:layout_height="@dimen/all_time_best_photo_size"
android:layout_margin="@dimen/all_time_best_frame_thickness"
app:shapeAppearanceOverlay="@style/CircleImageView" />
</LinearLayout>
<style name="CircleImageView" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
<dimen name="all_time_best_photo_size">70dp</dimen>
<dimen name="all_time_best_frame_thickness">5dp</dimen>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:thickness="@dimen/all_time_best_frame_thickness"
android:useLevel="false">
<gradient
android:startColor="@color/gold_gradient_start"
android:centerColor="@color/gold_gradient_end"
android:endColor="@color/gold_gradient_start"
android:angle="180" />
</shape>
接下来使用Glide加载图像,代码如下:
环形在哪里?如果我增加ImageView
的边距,它就会变得可见:
android:layout_margin="20dp"
还有 android:layout_margin="15dp"
(无需考虑颜色)
最后一张图是我能找到的最接近的,我可以尝试调整边距来改进它,但我认为这样可能会在不同的设备上出现问题……
我不明白的是,为什么使用相同的dimen
值作为环形厚度和ImageView
边距不起作用。有没有更“安全”的方法实现这个效果呢?
请注意,所有图片的框架大小都相同,我只是非常粗略地裁剪了截图。