我正在處理動畫,並且我想實現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'。 –