Q:

Android Java: Too many imageviews?

I have an arraylist of 50 imageviews containing the same bitmap using this code:
for (int i = 0; i < 50; i++) {

        ImageView imageView = new ImageView(getApplicationContext());
        imageView.setImageResource(R.drawable.pic1);
        imageView.setVisibility(ImageView.VISIBLE);
        imageView.setScaleType(ScaleType.CENTER);
        imageViews.add(imageView);
        view.addView(imageView);

    }

This code does not cause lag except for when I move each one:
final Runnable bulletData2 = new Runnable(){
    public void run(){
   if(i=0;i<=50;i++){
      movex = Math.cos((imageViews.get(i).getRotation() - 90) * Math.PI / 180) * 32;
      movey = Math.sin((imageViews.get(i).getRotation() - 90)* Math.PI / 180) * 32;
      imageViews.get(i).setX((float) (imageViews.get(i).getX() + movex));
      imageViews.get(i).setY((float) (imageViews.get(i).getY() + movey));
   }
 handler2.postDelayed(this, 2);    

 }
};

The bitmap is only 6kB and I tried a 600 byte version of the bitmap and it still lags.
If I set the imageviews to invisible then there is no lag, and if the images overlap and the app runs fast. 
I have tried adding hardware acceleration and largeheap but I only see a slight difference.
Could anyone let me know what I should change?
Edit: Imageviews is an arraylist, and view is a viewgroup = my frameLayout

A:

The problem is that you are updating the 50 ImageViews position every 2 millisecond which is incredibly fast that android have trouble rendering at that fast rate and causes lag on your device.
solution:
Increase the delay of your handler and calculate the movex and movey on a separate thread and update the imageView's position in the main thread to prevent exception.

