Сферическая анимация с текстом для использования облака тегов в приложении для Android

Я хочу создать сферическую анимацию в моем приложении для Android, аналогичном этому в приложении News Republic .

Я пытался создать сферу до сих пор, но может ли кто-нибудь вести меня, как приступить к разработке анимаций, подобных этому в android.

Нужно ли использовать opengl только, или мы можем добиться этого с помощью другого альтернативного варианта.

Кроме того, когда щелкнут текст, он открывает связанные новости на другом экране.

Введите описание изображения здесь

Введите описание изображения здесь

Введите описание изображения здесь

РЕДАКТИРОВАТЬ

Я наконец нашел некоторое решение для этого, которое доступно в этом пакете .

Но анимация не достаточно гладко.

Дайте мне знать, может ли кто-нибудь помочь мне в сглаживании анимаций?

Вам не нужен OpenGL. Вы можете сделать это, используя простой вид и Canvas. Я написал для вас немного кода. Вы можете просто скопировать его в свой проект, добавить в xml и запустить:

import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class TagCloudView extends View { String[] tags = new String[]{"Lemon","Orange","Strawberry","Plum","Pear","Pineapple","Blackberry","Watermelon"}; Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private float scroll = 0; private float prevY; public TagCloudView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void draw(Canvas canvas) { super.draw(canvas); float r = getHeight() / 3; paint.setColor(Color.BLACK); paint.setTextAlign(Paint.Align.CENTER); for (int i = 0; i < tags.length; i++) { float t = i + scroll / getHeight(); float y = (float) (r * Math.cos(Math.PI * 2 * t / tags.length)); // parametric circle equation float z = (float) (r * Math.sin(Math.PI * 2 * t / tags.length)); paint.setTextSize((r + z) / r/2 * 40 + 20); // magic values, change to something better paint.setAlpha((int) ((r + z) / r/2 * 127 + 128)); canvas.drawText(tags[i], getWidth() / 2, getHeight() / 2 + y, paint); } } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_DOWN) scroll -= event.getY() - prevY; // only one plane prevY = event.getY(); invalidate(); return true; } } 

Чтобы достичь результата, который вы описали, вам нужно добавить плавную прокрутку с помощью Scroller, изменить уравнение круга на уравнение сферы, настроить параметры и добавить некоторые геттеры / сеттеры. Используя параметрические уравнения, вы также можете найти текст, затронутый пользователем. Этот вид выглядит следующим образом:

Введите описание изображения здесь

Intereting Posts
Возможно ли запустить приложение Android-приложения при запуске телефона? Недействительный атрибут панели приложения «Андроид: заголовок» Учет кривизны Земли при использовании GroundOverlays View.invalidate (), похоже, не вызывает View.onDraw () Подробнее Eclipse ADT Insanity! Logcat полностью отключен Gap_init вызывается из ограниченного источника Какое самое раннее время я могу использовать findViewById в подклассе View? Полноэкранный диалог с использованием прозрачного StatusBar Как сопоставить список списков с RecyclerView Время, которое требуется, чтобы увидеть мое первое приложение для Android на рынке после публикации Как рисовать на ImageView Android: EditText рядом с ImageView – EditText как можно шире Heap alloc + free <размер кучи Почему java.text.DateFormat возвращает тот же формат даты для en_US и en_GB на Android? Я занимаюсь «первым приложением» для разработчиков Android, но приложение не будет запускаться