Проблема с анимацией и макетом в моем новом приложении? - PullRequest
0 голосов
/ 17 января 2012

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

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_full">
    <Button android:id="@+id/btnMusic"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:gravity="center"
            android:layout_marginLeft="215dp"
            android:layout_marginTop="140dp"
            android:background="@drawable/icon"/>
    <ImageView android:id="@+id/imgMusic"
        android:layout_width="150dp"
            android:layout_height="150dp"
            android:gravity="center"
            android:layout_marginLeft="170dp"
            android:layout_marginTop="100dp"
            android:background="@drawable/button_background"/>      
    <Button android:id="@+id/btnMovies"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:gravity="center"
            android:layout_marginLeft="405dp"
            android:layout_marginTop="140dp"
            android:background="@drawable/icon1"/>
    <ImageView android:id="@+id/imgMovies"
        android:layout_width="150dp"
            android:layout_height="150dp"
            android:gravity="center"
            android:layout_marginLeft="360dp"
            android:layout_marginTop="100dp"
            android:background="@drawable/button_background"/>
    </RelativeLayout>

Мой код Jav выглядит так:

    public class BubbleActivity extends Activity {
    /** Called when the activity is first created. */
    /** Called when the activity is first created. */
    Button btnMusic, btnMovies ;
    ImageView imgMusic,imgMovies;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
}
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
      super.onWindowFocusChanged(hasFocus);
      btnMusic = (Button)findViewById(R.id.btnMusic);
      btnMovies = (Button)findViewById(R.id.btnMovies);
      btnMusic.setOnClickListener(new View.OnClickListener() 
            {
               public void onClick(View v) {
                  Intent intent = new Intent(PixieActivity.this,Splash.class);
                  startActivity(intent);
               }
            });
      ImageView imgMusic = (ImageView)findViewById(R.id.imgMusic);                                        
      imgMusic.setBackgroundResource(R.drawable.frame_animation);
      AnimationDrawable frameAnimation =(AnimationDrawable) imgMusic.getBackground();  
      if (frameAnimation.isRunning()) {
             frameAnimation.stop();
             }
          else {
         frameAnimation.start();
          }
     ImageView imgMovies = (ImageView)findViewById(R.id.imgMovies);                                        
      imgMovies.setBackgroundResource(R.drawable.frame_animation);
      AnimationDrawable frameAnimation1 =(AnimationDrawable) imgMovies.getBackground();  
      if (frameAnimation1.isRunning()) {
             frameAnimation1.stop();
             }
          else {
             frameAnimation1.start();
          }
    }}

Но из-за полей расположение кнопок отвлекалось в разных разрешениях телефона,Есть ли другой способ добиться такой же раскладки с независимым разрешением устройства.Также я хочу добавить анимацию пузырей к каждой иконке, которую я сделаю на следующих страницах.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 17 января 2012

Я бы предложил не жестко кодировать поля, а вместо этого обернуть Buttons и ImageViews в LinearLayout каждый, а затем установить интервал с помощью layout_weight, чтобы он был идеально масштабируемым.

Фактический выбор макета зависит от того, нужна ли кнопка размером 80x80, а ImageView - точно 150x150.

Например (псевдокод: очевидно, многие параметры не указаны):

<RelativeLayout>
   <LinearLayout id="buttons" >
      <LinearLayout layout_width = "0dp" layout_weight = "1"> <!-- 0 width is important! -->
          <Button layout_gravity="center" />
      </LinearLayout>
      <LinearLayout layout_width = "0dp" layout_weight = "1">
          <Button layout_gravity="center" />
      </LinearLayout>
   </LinearLayout>

   <LinearLayout id="images" align with @buttons>
      <LinearLayout layout_width = "0dp" layout_weight = "1">
          <ImageView layout_gravity="center" />
      </LinearLayout>
      <LinearLayout layout_width = "0dp" layout_weight = "1">
          <ImageView layout_gravity="center" />
      </LinearLayout>
   </LinearLayout>
</RelativeLayout>

И просто убедитесь, что "кнопки" и "изображения" LinearLayouts установлены на одинаковую высоту и заполненыширина, так что кнопки и изображения перекрываются.Подробнее о layout_weight: Что означает android: layout_weight?

Если вам не нужны кнопки и ImageViews для точного размера, подумайте также и о том, чтобы определить их по весу.Тогда независимо от того, на каком экране вы находитесь, если вы скажете кнопке взять 1/4 от нее через layout_weight, она никогда не будет искажена

...