3

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: Unable to start activity ComponentInfo を示して
いる


私が実装しようとしているのは

  • ビューフリッパーの各子のコントロールを定義、リッスンするために異なるクラスを使用する必要があります
  • 上記の例では、HomeScreen はビュー フリッパーの子画面の 1 つです。
  • しかし、行v.findViewByIdにエラーが表示されています getCurrentFocus() はビューを送信する正しい方法ではないと思います

天気がわからないのですが、正しい方法で移動していますか? そのviewflpperを定義するクラスでviewflipperのすべての子のすべてのコントロールを定義してリッスンすると、そのクラスは非常に大きくなります。そう思わせてくれました..

ありがとう...

4

1 に答える 1

4

Uは、インテントを使用してアニメーションを実行できます。

ステップ1:urプロジェクトのresディレクトリの下にanimフォルダを作成します。

ステップ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を作成します

ステップ5:上記のコードを使用しますが、以下を変更します

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

ステップ6:

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

フェードイン操作を実行するには、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" />
于 2010-10-29T13:08:24.373 に答える