Поворот R.drawable в kotlin - PullRequest
       6

Поворот R.drawable в kotlin

0 голосов
/ 13 января 2020

Мне нужно отобразить показания направления ветра в виде стрелок, оригинальная bmp - это стрелка, повернутая на 0 ° (направленная вверх), у меня есть значение для l oop, в котором я могу получить градусы из базы данных и установить можно нарисовать в моем mpandroidchart, но мне нужно повернуть его.

 val jsonTemperatureData = JSONArray(result?.get(0))
 for (i in 0 until jsonTemperatureData.length()) {
     val item = jsonTemperatureData.getJSONObject(i)
     val reading_temperature = item.getString("reading_windspeed")
     val degrees= item.getString("degrees")

     yVals.add(Entry(hour.toFloat(), reading_temperature.toFloat(), ContextCompat.getDrawable(getApplicationContext(),R.drawable.direc)))
 }

Как мне установить значение с плавающей запятой от val degrees= item.getString("degrees") до R.drawable.direc внутри этого l oop?

Ответы [ 3 ]

0 голосов
/ 13 января 2020

Вместо поворота рисованного элемента я бы предложил вам повернуть ImageView.

Matrix matrix = new Matrix();
imageView.setScaleType(ImageView.ScaleType.MATRIX);   //required
val bounds: Any = imageView.getDrawable().getBounds()
matrix.postRotate( YOUR_ANGLE_GOES_HERE, bounds.width()/2, bounds.height()/2);
imageView.setImageMatrix(matrix);

или

mImageView.setRotation(YOUR_ANGLE_GOES_HERE) с API> = 11

Источник

0 голосов
/ 13 января 2020

Я нашел решение, MPAndroidChart принимает только рисунки в качестве значков для своих диаграмм, и я хотел повернуть этот чертеж (это было бы легко, если бы были ImageViews).

Таким образом, решение заключалось в преобразовании рисованного в растровое изображение, поверните это растровое изображение, а затем преобразуйте его обратно в чертежное и установите в качестве значка:

 val jsonTemperatureData = JSONArray(result?.get(0))
            for (i in 0 until jsonTemperatureData.length()) {
                val item = jsonTemperatureData.getJSONObject(i)
                val reading_temperature = item.getString("reading_windspeed")
                val reading_direction = item.getString("reading_winddirection")
                val hour = item.getString("hour")
                if(item.getDouble("maxspeed") > max)
                    max = item.getDouble("maxspeed")
                if(item.getDouble("minspeed")< min)
                    min = item.getDouble("minspeed")

                var icon = BitmapFactory.decodeResource(applicationContext.getResources(),
                        R.drawable.direction0)
                val rotatedBitmap = icon.rotate(reading_direction.toFloat())

                var d: Drawable = BitmapDrawable(getResources(), rotatedBitmap)

                yVals.add(Entry(hour.toFloat(), reading_temperature.toFloat(), d))
            }
0 голосов
/ 13 января 2020

Если вы используете imageView, есть свойство: вращение

, если у вас есть код, подобный приведенному ниже:

<ImageView
        android:id="@+id/imageView"
        android:layout_width="60dp"
        android:layout_height="60dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

приведенный ниже код работает для я:

imageView.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),R.drawable.direc))
imageView.rotation = imageView.rotation + degrees.toFloat()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...