【发布时间】:2017-04-21 09:39:03
【问题描述】:
我有一个 2*2/3*3/4*4... ImageView 的布局。其中一些随机着色如下:
对于 Imageview 的随机颜色之一,我有使用此代码:
Random random = new Random();
id = array_image1.get(random.nextInt(array_image1.size()));
ObjectAnimator animator = ObjectAnimator.ofInt(findViewById(id), "backgroundResource", R.drawable.original_img, R.drawable.org_state).setDuration(1500);
animator.setStartDelay(1500);
animator.setEvaluator(new ArgbEvaluator());
animator.start();
我正在像这样处理彩色 ImageView 上的一些点击事件:
for (int i = 0; i < array_image11.size(); ++i) {
final int btn = array_image11.get(i);
findViewById(btn).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if ((findViewById(id)).equals(findViewById(btn)))
//Inform the user the button has been clicked
{
//forward
findViewById(id).setBackgroundResource(R.drawable.original_img);
}else {
//backward
Toast.makeText(StaticSpatial.this, "wrong", Toast.LENGTH_SHORT).show();
}
});
}
以上都没有问题。
但是当我像这样添加随机旋转动画代码时:
int n;
int[] a=new int[]{1,2};
final Random rnd = new Random();
n=a[rnd.nextInt(a.length)];
if(n==1)
{
ObjectAnimator rotateAnimator = ObjectAnimator.ofFloat(l4, View.ROTATION, 0, 90);
rotateAnimator.setDuration(2000); // miliseconds
rotateAnimator.start();n);
}
else
{
ObjectAnimator rotateAnimator = ObjectAnimator.ofFloat(l4, View.ROTATION, 0, 90);
rotateAnimator.setDuration(2000); // miliseconds
rotateAnimator.start();
}
旋转后的图像看起来像这样(即彩色 Imageview 改变它的位置):
添加此旋转动画代码后,我的 clickEvent 无法获得正确的 ImageView id。 即当imageview改变它的位置时,他们的id应该与那个位置一致。但 imageview id 保持在同一个位置。
那么如何在旋转后获取所需的ImageviewId
更新:
在使用 azizbekian 的答案后(现在使用 animator 而不是动画),我找到了正确的 image-view id ,但只是第一次。 即第一次 Activity 启动时效果很好,但是当我要去一个新视图(比如 3*3)并再次返回到这个视图(2*2)时,它返回错误的图像视图 ID,直到 Activity 再次重新启动。请参阅我的更新代码以获取参考。
工作和问题说明:
我已经说过Imageview的矩阵有很多,例如2 * 2/3 * 3/4 * 4.....所以当我们启动Application时首先加载2 * 2的imageview矩阵,然后单击奇数彩色图像视图进入 3*3 矩阵,但是当我们单击奇数彩色图像视图以外的其他颜色时,它会进入下一级,例如 3*3。因此,当应用程序第一次启动时,当我单击奇数彩色图像视图时,它会进入 3*3 矩阵,但是当单击除奇数彩色图像视图以外的其他颜色后再次返回 2*2 时。然后当我们再次单击彩色图像视图时,它不会获得正确的图像 ID。如果还有其他问题请询问?
如何解决这个问题?
【问题讨论】:
-
至少你们给出了反对的理由..
-
but when I'm going to a new view, and return back again to this view这是什么意思?也许值得分享一个代码?整理您的代码,删除与问题无关的所有内容(cmets、空格),给我们(您问题的读者)一个简洁、可重复、干净的问题。 -
这意味着正如我已经说过的Imageview有很多matix,例如2 * 2/3 * 3/4 * 4.....所以当我们启动应用程序时首先加载2 * 2图像视图的矩阵,当我们单击奇数彩色图像视图时,它会转到 3*3 矩阵,但是当我们单击奇数彩色图像视图以外的其他颜色时,它会进入下一级,例如 3*3。因此,当我第一次单击奇数彩色图像视图时,当应用程序第一次启动时它进入 3*3 矩阵,但是当单击奇数彩色图像视图以外的其他颜色后再次返回 2*2 时。然后当我们再次单击彩色图像视图时,它不会获得正确的图像 ID。
-
如果您有任何其他疑问请询问?
-
你怎么去 3*3 又来 2*2 请分享那个代码。
标签: java android android-layout android-animation animator