在android中,我想通过从中心点添加每个花瓣来绘制花朵。我在 ImageView 上使用了setRotation,但是每个花瓣的中心点都不同。 (我指的是花朵的中心点)有人可以看看我的代码并建议我更正吗?谢谢。

   int angle=0;
   int ypos=500;
   int xpos=500;

   RelativeLayout layout = (RelativeLayout)findViewById(R.id.ln1);

   for(int i=0;i<10;i++)
   {

      ImageView image = new ImageView(this);
      image.setLayoutParams(new android.view.ViewGroup.LayoutParams(150,400));
      image.setX(xpos);
      image.setY(ypos);
      image.setPadding(-7,-30,-10,0);
      image.setPivotX(1.0f);
      image.setScaleX(1.5f);
      image.setScaleY(1.5f);

      image.setImageResource(R.drawable.petal);
      image.setRotation(image.getRotation() + angle);
      angle=angle+36;
      layout.addView(image);
   }

我得到的图像是这个

java - 如何在Android中为每只花瓣绘制花朵-LMLPHP

最佳答案

旋转图像时,旋转是使用图像的左上角进行的,而不是旋转图像的中心。

下图可能说明了这一点。黑色正方形代表您的图像。左侧站点显示您现在的情况。右侧显示了您想要的情况。

java - 如何在Android中为每只花瓣绘制花朵-LMLPHP

旋转之前,应从x位置减去一半的宽度,并从y位置加上一半的高度。然后,您应该获得所需的图像。

正如用户Ralf Renz在其comment中指出的那样,您也可以简单地从-36角度开始。这是一个有用的解决方法。

关于java - 如何在Android中为每只花瓣绘制花朵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49795145/

10-10 02:26