У меня есть приложение, которое рисует планеты и гороскоп в соответствии с днем рождения человека. Я использую метод onDraw()
в пользовательском View
, который добавляется к FrameLayout
в XML
. Проблема в том, что, когда я покидаю страницу и корректирую дату, активность только рисует планеты, но не знаки зодиака для новой даты. Все эти «re» -различия происходят в том же методе onDraw()
, и я вижу, что метод onDraw()
вызывается даже частью, которая добавляет растровые изображения знака зодиака. Учитывая, что их называют, я не могу сказать, что происходит не так, и чувствую, что это имеет какое-то отношение к растровым изображениям. А так как планеты перерисовываются, я еще больше смущен тем, что может быть проблемой. Я включил код, который предположительно выполняется, но не отображается на экране.метод onDraw() не рисовать все растровые изображения
Log.i("ascendet planets", Integer.toString(ascendent));
Bitmap capricornBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.capricorn);
Bitmap aquariusBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.aquarius);
Bitmap piscesBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pisces);
Bitmap airesBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.aires);
Bitmap taurusBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.taurus);
Bitmap geminiBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.gemini);
Bitmap cancerBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.cancer);
Bitmap leoBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.leo);
Bitmap virgoBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.virgo);
Bitmap libraBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.libra);
Bitmap scorpioBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.scorpio);
Bitmap sagitariusBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sagittarius);
ArrayList<Bitmap> bitmapArray = new ArrayList<>();
bitmapArray.add(capricornBitmap);
bitmapArray.add(aquariusBitmap);
bitmapArray.add(piscesBitmap);
bitmapArray.add(airesBitmap);
bitmapArray.add(taurusBitmap);
bitmapArray.add(geminiBitmap);
bitmapArray.add(cancerBitmap);
bitmapArray.add(leoBitmap);
bitmapArray.add(virgoBitmap);
bitmapArray.add(libraBitmap);
bitmapArray.add(scorpioBitmap);
bitmapArray.add(sagitariusBitmap);
int bitmapWidth;
int bitmapHeight;
float x = 0;
float y = 0;
for (int i = ascendent; i < ascendent + 12; i++) {
int multiplier = i - ascendent;
bitmapWidth = bitmapArray.get(i%12).getWidth();
bitmapHeight = bitmapArray.get(i%12).getHeight();
x = (float) getPositionX(r_adjusted, marginOneSide, multiplier * 30 + 15, ascendent);
y = (float) getPositionY(r_adjusted, height, multiplier * 30 + 15, ascendent);
x += bitmapWidth/2;
y -= bitmapHeight/2;
Log.i("bitmapWidth", Integer.toString(bitmapHeight));
Log.i("bitmapHeight", Integer.toString(bitmapHeight));
Log.i("i in planets", Integer.toString(i));
canvas.drawBitmap(bitmapArray.get(i % 12), x, y, null);
}
Хотелось бы, чтобы все было так просто. Функции getPostionX() и getPositionY() просто возвращают значения X и Y по кругу на 15, 45, 75 ... 345 градусов. Затем эти точки получают растровые знаки знака зодиака. Радикалы зодиака загружаются в первый раз на экране, но они загружаются только один раз. Знаки зодиака должны менять позиции со временем. Если другое время и дата установлены на планетах, они меняют позиции, но не символы зодиака, несмотря на то, что они проходят через тот же метод onDraw(). Теперь я отправлю координаты x, y. – KarlCobb
Спасибо за совет. Простой ответ. Я записал x и y. Я понял, что у меня есть (+ n * Math.PI/6), который я не ввел внутри Math.toRadians() внутри косинусной функции. Поэтому проблема решена. Спасибо за внешнюю перспективу. Вероятно, выбрил день вырывания волос. – KarlCobb
Добро пожаловать. – MobileX