Как создать представление Circular Reel в Android?

Abhishek спросил: 12 мая 2018 в 04:31 в: android

Как я могу создать представление, подобное этому в Android? Я создал это круговое изображение основного кадра с использованием формы круглой формы

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >
    <solid android:color="#000"/> <!-- this one is ths color of the  Rounded Button -->
    <corners
        android:bottomRightRadius="100dp"
        android:bottomLeftRadius="100dp"
        android:topLeftRadius="100dp"
        android:topRightRadius="100dp"/>
</shape>

Как разместить внутренние изображения в этом круговом кадре?

1 ответ

James Poag ответил: 12 мая 2018 в 05:18

Используйте образ Circular Reel как маску: вырезайте слоты для изображений так, чтобы альфа была нулевой, фотографии идут. Вы нарисуете это изображение последним в верхней части ваших изображений.

Каждое изображение в каждом слоте должно быть повернуто и переведено в позиции слота. Сначала поверните изображение (вокруг центра изображения), а затем переведите изображение в его слот.

Вам не нужно делать это динамически, так как слоты все исправлены. Это означает, что вы вычисляете преобразование изображения, используя обычное старое перо и бумагу, а затем создаете каждое преобразование вручную в свою разметку макета. Некоторые полезные формулы взяты из полярных систем координат (r, тета) и преобразований в декартово (x, y). Вся моя математика на картинке находится в градусах, но вам лучше работать в радианах.

R - это радиус круга, расстояние от центра катушки до Если вы были (и если бы вы хотели динамически менять изображения), я бы узнал, как указать пустой слот для каждого преобразования и добавить изображения в ex post facto.

Практикуйте выделение одного изображения, затем выполните математику для остальных слотов.

Abhishek ответил: 12 мая 2018 в 05:42
Спасибо, @james Я попробую это и вернусь к вам. большое спасибо
Abhishek ответил: 17 мая 2018 в 04:07
можете ли вы предоставить какой-то код для справки, я не получил его полностью. благодаря