1

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

  TranslateAnimation transAnimation1 = new TranslateAnimation(0, 145, 0, 275); 
      transAnimation1.setDuration(6000); 
      ChairA1.startAnimation(transAnimation1); 

      TranslateAnimation transAnimation2 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation2.setDuration(6000); 
      ChairA2.startAnimation(transAnimation2); 

      TranslateAnimation transAnimation3 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation3.setDuration(6000); 
      ChairA3.startAnimation(transAnimation3); 

      TranslateAnimation transAnimation4 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation4.setDuration(6000); 
      ChairA4.startAnimation(transAnimation4); 

      TranslateAnimation transAnimation5 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation5.setDuration(6000); 
      ChairA5.startAnimation(transAnimation5); 

      TranslateAnimation transAnimation6 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation6.setDuration(6000); 
      ChairA6.startAnimation(transAnimation6); 

      TranslateAnimation transAnimation7 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation7.setDuration(6000); 
      ChairA7.startAnimation(transAnimation7); 

      TranslateAnimation transAnimation8 = new TranslateAnimation(0, 50, 0, 50); 
      transAnimation8.setDuration(6000); 
      ChairA8.startAnimation(transAnimation8); 

У меня есть 8 стульев в моем колесе обозрения, но проблема в том, что колесо - это круг, и я не могу сделать ImageView (стул) в точке назначения кривой ... кто-то мне поможет ... Мне действительно нужна помощь на этом

ответ

0

Вот код. Это плохо написано, но это делает работу. Не спрашивайте меня, как я сделал первоначальное расположение стульев. Я просто использовал RelativeLayout и догадался на полях. Чтобы сделать эту анимацию красивой и правильно выровненной на разных телефонах, вам все равно придется много работать.

Вот MainActivity.java

package com.example.ferriswheel; 

import android.animation.ObjectAnimator; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.LinearInterpolator; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 

public class MainActivity extends Activity { 
    RelativeLayout ferrisWheelLayout; 
    ObjectAnimator spin; 
    ImageView chairView1, chairView2, chairView3, chairView4; 
    ObjectAnimator counterSpin1, counterSpin2, counterSpin3, counterSpin4; 
    boolean currentlySpinning; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void onToggleClicked(View view) { 
     if (currentlySpinning) { 
      stopAnimation(view); 
      currentlySpinning = false; 
     } else { 
      startAnimation(view); 
      currentlySpinning = true; 
     } 
    } 


    public void stopAnimation(View view) { 
     spin.cancel(); 
     counterSpin1.cancel(); 
     counterSpin2.cancel(); 
     counterSpin3.cancel(); 
     counterSpin4.cancel(); 
    } 

    public void startAnimation(View view) { 
     chairView1 = (ImageView) findViewById(R.id.chair1); 
     chairView2 = (ImageView) findViewById(R.id.chair2); 
     chairView3 = (ImageView) findViewById(R.id.chair3); 
     chairView4 = (ImageView) findViewById(R.id.chair4); 
     ferrisWheelLayout = (RelativeLayout) findViewById(R.id.parentWheelLayout); 

     spin = ObjectAnimator.ofFloat(ferrisWheelLayout, "rotation", 0f, 360f); 
     spin.setRepeatMode(-1); 
     spin.setRepeatCount(Animation.INFINITE); 
     spin.setDuration(8000); 
     spin.setInterpolator(new LinearInterpolator()); 
     spin.start(); 

     counterSpin1 = ObjectAnimator 
       .ofFloat(chairView1, "rotation", 0f, -360f); 
     counterSpin1.setRepeatMode(-1); 
     counterSpin1.setRepeatCount(Animation.INFINITE); 
     counterSpin1.setDuration(8000); 
     counterSpin1.setInterpolator(new LinearInterpolator()); 
     counterSpin1.start(); 

     counterSpin2 = ObjectAnimator 
       .ofFloat(chairView2, "rotation", 0f, -360f); 
     counterSpin2.setRepeatMode(-1); 
     counterSpin2.setRepeatCount(Animation.INFINITE); 
     counterSpin2.setDuration(8000); 
     counterSpin2.setInterpolator(new LinearInterpolator()); 
     counterSpin2.start(); 

     counterSpin3 = ObjectAnimator 
       .ofFloat(chairView3, "rotation", 0f, -360f); 
     counterSpin3.setRepeatMode(-1); 
     counterSpin3.setRepeatCount(Animation.INFINITE); 
     counterSpin3.setDuration(8000); 
     counterSpin3.setInterpolator(new LinearInterpolator()); 
     counterSpin3.start(); 

     counterSpin4 = ObjectAnimator 
       .ofFloat(chairView4, "rotation", 0f, -360f); 
     counterSpin4.setRepeatMode(-1); 
     counterSpin4.setRepeatCount(Animation.INFINITE); 
     counterSpin4.setDuration(8000); 
     counterSpin4.setInterpolator(new LinearInterpolator()); 
     counterSpin4.start(); 

    } 
} 

А вот его расположение activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/parentWheelLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="onToggleClicked" > 

    <ImageView 
     android:id="@+id/wheelSpokes" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/ic_launcher" /> 

    <ImageView 
     android:id="@+id/chair1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:layout_marginBottom="100dp" 
     android:layout_marginLeft="100dp" 
     android:layout_marginRight="100dp" 
     android:layout_marginTop="100dp" 
     android:src="@drawable/ic_launcher" /> 

     <ImageView 
     android:id="@+id/chair2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:layout_marginBottom="100dp" 
     android:layout_marginLeft="200dp" 
     android:layout_marginRight="100dp" 
     android:layout_marginTop="100dp" 
     android:src="@drawable/ic_launcher" /> 

     <ImageView 
     android:id="@+id/chair3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:layout_marginBottom="100dp" 
     android:layout_marginLeft="100dp" 
     android:layout_marginRight="100dp" 
     android:layout_marginTop="300dp" 
     android:src="@drawable/ic_launcher" /> 

     <ImageView 
      android:id="@+id/chair4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="top" 
      android:layout_marginBottom="100dp" 
      android:layout_marginLeft="200dp" 
      android:layout_marginRight="100dp" 
      android:layout_marginTop="300dp" 
      android:adjustViewBounds="true" 
      android:src="@drawable/ic_launcher" /> 


</RelativeLayout> 

Некоторые теории позади кода:

Imagine чертово колесо поворота на 90 градусов в одну сторону , Что обычно делает один стул на этом колесе обозрения? Это кресло перемещается с колесом обода вдоль оси колеса, и в то же самое время, это кресло также вращается на 90 градусов по собственной оси.

Другими словами, мы могли бы заставить стул начать вращаться на своей собственной оси, и в то же время, если бы мы могли объединить оба колеса феррита и стул, закрыв его в увеличенном виде, тогда мы могли бы повернуть это более крупный вид с большей оси с той же скоростью в противоположном направлении.

Надеюсь, это имеет смысл для вас.

+0

не могли бы вы мне помочь ... я выяснил это в течение нескольких недель ... –

+0

спасибо, сэр, что тратили свое время на ответ на мой вопрос ,,, я все еще изучаю некоторые основы программирования в андроидах хотя у меня есть некоторые базовые знания в java ... спасибо за помощь. –

+0

если вы не возражаете, сэр .. вы можете сделать мне коды, которые мне нужны ... я действительно не могу создать мое ... это действительно сложно ... –