2012-02-24 4 views
2

私は画像を前後に移動する画像ビューアを、右/左ボタンをクリックして行います。アニメーションを設定するImageSwitcherが実行されます(in_leftまたはout_right)

私は写真間のトランジションをアニメーション化したいと思っています。私はそれをImageSwitcherを使ってやっていますが、問題は残っています。

読み込まれたアニメーションは常に同じです。右または左のボタンをクリックしても違いはありません。

質問:ボタンをクリックしたときに実行されるアニメーションを設定するにはどうすればよいですか?

私はこのブログに基づいて私のコードでした:コードのhttp://saigeethamn.blogspot.com/2010/05/image-switcher-view-android-developer.html

ここで同じ重要な部品:

// OnCreate() 
in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left); 
out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right); 

imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1); 
imageSwitcher.setFactory(this); 
imageSwitcher.setInAnimation(in); 
imageSwitcher.setOutAnimation(out); 

今すぐクリックイベント(BM1とBM2はビットマップです):

private OnClickListener mClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (v.getId()==R.id.buttonRight) { 
      Drawable d =new BitmapDrawable(getResources(),bm1); 
      imageSwitcher.setImageDrawable(d); 
     } else 
     if (v.getId()==R.id.buttonLeft) { 
      Drawable d =new BitmapDrawable(getResources(),bm2); 
      imageSwitcher.setImageDrawable(d); 
     } 
    } 
}; 

ImageSwitcherは実行する魔法のアニメーションをどのように知っていますか? In LeftまたはOut Rightの場合

ここから編集------------------------------------------- ---------

ソリューション:ルイガスパルの回答に基づいて

private OnClickListener mClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (v.getId()==R.id.buttonRight) { 
      imageSwitcher.setInAnimation(this, R.anim.slide_in_left); // added 
      imageSwitcher.setOutAnimation(this, R.anim.slide_out_left); // added 
      Drawable d =new BitmapDrawable(getResources(),bm1); 
      imageSwitcher.setImageDrawable(d); 
     } else 
     if (v.getId()==R.id.buttonLeft) { 
      imageSwitcher.setInAnimation(this, R.anim.slide_in_right); // added 
      imageSwitcher.setOutAnimation(this, R.anim.slide_out_right); // added 
      Drawable d =new BitmapDrawable(getResources(),bm2); 
      imageSwitcher.setImageDrawable(d); 
     } 
    } 
}; 

。彼が示すxmlを作成する必要があります。

答えて

4

あなたがあなた自身のアニメーション

slide_in_left.xml

slide_in_right.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="-100%p" android:toXDelta="0" 
       android:duration="350"/> 
</set> 

slide_out_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="0" android:toXDelta="-100%p" 
       android:duration="350"/> 
</set> 

slide_out_right.xmlを実装することができます

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="0" android:toXDelta="100%p" 
       android:duration="350"/> 
</set> 

あなたはこのようにそれを使用することができます:

//Switch Left 
Intent myIntent = new Intent(m_context, MyActivity.class); 
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(myIntent); 
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left); 

//Switch Right 
Intent myIntent = new Intent(m_context, MyActivity.class); 
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(myIntent); 
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right); 
+0

答えをありがとう。私はこれらの4つのファイルをres/animフォルダに作成し、overridePendingTransition(R.anim.slide_in_right、R.anim.slide_out_right)を入れます。前と後の私のimageSwitcher.setImageDrawable(d);しかし、これは私のアニメーションを変更しません。何を設定すればいいですか? – Derzu

+0

最初の質問と、アクティビティ間でアニメーション化するためのコードに気づかずにいました。アニメーションを変更するには、各ボタンをクリックしたときにsetInAnimation()およびsetOutAnimation()を使用します。 –

+0

今、私は理解している、それは作品です。スライドさせたい方向ごとにInとOutの両方のアニメーションを設定する必要があります。そのように: if(direction == RIGHT){ imageSwitcher.setInAnimation(this、R.anim.slide_in_left); imageSwitcher.setOutAnimation(this、R.anim.slide_out_left); } else if(direction == LEFT){ imageSwitcher.setInAnimation(this、R.anim.slide_in_right); imageSwitcher.setOutAnimation(this、R.anim.slide_out_right); } – Derzu

関連する問題