我正在处理动画,并且我想实现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'。 –