私はアニメーションを作成していますが、私はクリーナーコードのために別様にOnClickListener
を実装したいと思います。アクティビティからビューを抽出し、OnClickListener内にアニメーションを実装します
たとえば、これを行うことができます。
注:active[0]
はtrue
MainActivity
final Boolean[] active = {false};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(active[0]){
// do some work
}else{
Animation animPictureDeactiveLeft = AnimationUtils.loadAnimation(MainActivity.this, R.anim.deactivate_picturebtn_onleft);
Animation animVideoMiniLeft = AnimationUtils.loadAnimation(MainActivity.this, R.anim.activate_videobtn_onleft);
Animation animGifMiniLeft = AnimationUtils.loadAnimation(MainActivity.this, R.anim.move_gifbtn_onleft);
ImageView btnCameraPic = (ImageView) findViewById(R.id.btnCapturePicture);
ImageView btnCameraVid = (ImageView) findViewById(R.id.btnCaptureVideo);
ImageView btnCameraGif = (ImageView) findViewById(R.id.btnCaptureGif);
btnCameraPic.startAnimation(animPictureDeactiveLeft);
btnCameraVid.startAnimation(animVideoMiniLeft);
btnCameraGif.startAnimation(animGifMiniLeft);
active[0] = true;
}
}
});
このコードは正常に動作します。しかし、私はこのコードのスタイルが好きではない場合にのみ、私は自分の仕事を実行したいです。
他にもOnClickListener
を実装したいと思います。
私は以下を試しましたが、これが良い方法であるかどうかわかりません。
そうでない場合は、私に何が最善の方法であるか教えてください。
TestClick
public class TestClick extends AppCompatActivity implements OnClickListener {
public static boolean bActive = false;
@Override
public void onClick(View v) {
if(bActive) {
active();
}else{
Animation animPictureDeactiveLeft = AnimationUtils.loadAnimation(TestClick.this, R.anim.deactivate_picturebtn_onleft);
Animation animVideoMiniLeft = AnimationUtils.loadAnimation(TestClick.this, R.anim.activate_videobtn_onleft);
Animation animGifMiniLeft = AnimationUtils.loadAnimation(TestClick.this, R.anim.move_gifbtn_onleft);
ImageView btnCameraPic = (ImageView) findViewById(R.id.btnCapturePicture);
ImageView btnCameraVid = (ImageView) findViewById(R.id.btnCaptureVideo);
ImageView btnCameraGif = (ImageView) findViewById(R.id.btnCaptureGif);
btnCameraPic.startAnimation(animPictureDeactiveLeft);
btnCameraVid.startAnimation(animVideoMiniLeft);
btnCameraGif.startAnimation(animGifMiniLeft);
bActive = true;
}
}
public void active(){
}
}
MainActivity
button.setOnClickListener(new TestClick(){
public void active(){
// do some work
}
});
@ cricket007どこのアニメーションを実装しますか? 'TestClick'または' MainActivity'の中で –
'TestClick'は' onCreate'メソッドを持っていません。 'findViewById'は失敗するので、そこにアニメーションを行うことはできません。だから 'MainActivity ...View.OnClickListener'を実装します –
@ cricket007私の主な目的は、別のクラスファイルでアニメーションコードを整理することです。 'clickListener'でアニメーションを管理できない場合、' MainActivity'に 'OnClickListener'を実装する必要はありません。 –