【发布时间】:2020-11-19 10:24:35
【问题描述】:
我正在尝试实现以下目标:
里面的图片问题不大,但戒指似乎是一个。我能够做到这一点:
使用:
<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>
如您所见,这只需要 3 种颜色。所以我尝试以编程方式进行:
val ring = GradientDrawable(
GradientDrawable.Orientation.LEFT_RIGHT, intArrayOf(
ContextCompat.getColor(requireContext(), R.color.gold_gradient_1),
ContextCompat.getColor(requireContext(), R.color.gold_gradient_2),
ContextCompat.getColor(requireContext(), R.color.gold_gradient_3),
ContextCompat.getColor(requireContext(), R.color.gold_gradient_4),
ContextCompat.getColor(requireContext(), R.color.gold_gradient_5)
)
)
ring.shape = GradientDrawable.OVAL
ring.thickness = resources.getDimension(R.dimen.all_time_best_frame_thickness).toInt()
binding.goldFrame.background = ring
这并没有画出任何东西,所以我确定我错过了一些东西。此外,ring.thickness 仅在 API 29 上可用,而我的最小值是 23。所以我需要找到一些替代方案。
布局是:
<LinearLayout
android:id="@+id/gold_frame"
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_photo_margin"
app:shapeAppearanceOverlay="@style/CircleImageView" />
</LinearLayout>
知道如何解决这个问题吗?
【问题讨论】:
标签: android android-drawable android-shape