Android: Могу ли я использовать другой класс для другого ребенка viewflipper - PullRequest
3 голосов
/ 22 октября 2010

У меня другой экран для работы в приложении для Android. Я использую ViewFlipper для этого. Я решил использовать разные классы для разных детей зрения

public main extends Activity{
{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sign_in);
    ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);

HomeScreen s = new HomeScreen(getApplicationContext(), getCurrentFocus(), viewFlipper);
  }
} 

и класс Homescreen: -

public class HomeScreen {
private Button signIn;
private Button createAccount;
private View v;
private Context context;
private ViewFlipper viewflipper;

public HomeScreen(Context context,View v,ViewFlipper viewflipper ) {
 this.v=v;
 this.context = context;
 this.viewflipper = viewflipper;


 signIn = (Button) v.findViewById(R.id.button_sign_in_homeScreen);
 createAccount = (Button)v.findViewById(R.id.button_createAccount_homeScreen);
 signIn.setOnClickListener(new View.OnClickListener() {
 public void onClick(View v) {
   viewflipper.setDisplayedChild(1);
  }
 });   
}

но это исключение запуска шоу java.lang.RuntimeException: невозможно запустить действие ComponentInfo Может кто-нибудь, пожалуйста, помогите мне
getCurrentFocus () является правильным способом получить представление?


То, что я пытаюсь реализовать, это

  • Мне нужно использовать другой класс для определения, прослушивания элементов управления каждого дочернего элемента представления flipper
  • В приведенном выше примере HomeScreen является одним из моих дочерних экранных флипперов
  • Но строка v.findViewById показывает ошибку Я думаю, что getCurrentFocus () - неправильный способ отправки представления

Не знаю, правильно ли я двигаюсь? Когда я определяю и слушаю все элементы управления всех потомков viewflipper в классе, где я определяю этот viewflpper, этот класс становится очень большим. Это заставило меня так думать ..

Спасибо ...

1 Ответ

4 голосов
/ 29 октября 2010

Вы можете выполнить анимацию с помощью Намерения:

Шаг 1: создайте папку anim в каталоге res в вашем проекте.

Шаг 2: создать файл slideleft.xml

Шаг 3: введите следующий код в этом файле

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="400" />
</set>

шаг 4: аналогично создайте slideright.xml

step5: используйте вышеуказанный код, но измените следующий

<translate android:fromXDelta="-100%p" android:toXDelta="0"
            android:duration="400" />

шаг 6:

 target.startAnimation(AnimationUtils.loadAnimation(HomeScreen.this, R.anim.slide_left));

для выполнения операции fadein, просто добавьте следующий код в файл fadein.xml

<?xml version="1.0" encoding="utf-8"?>

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromAlpha="0.0" android:toAlpha="1.0"
       android:duration="300" />

аналогично для затухания тоже

<?xml version="1.0" encoding="UTF-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromAlpha="1.0" android:toAlpha="0.0"
       android:duration="300" />
...