Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 105

Не отображается пользовательское представление Canvas в android

26.05.2023, 11:45. Показов 525. Ответов 1

Студворк — интернет-сервис помощи студентам
Пытаюсь создать лабиринт или что-то в этом духе под android, я пытаюсь сделать своё собственное представление, которое затем будет перерисовываться при движении персонажа по игровому полю, но мне также нужно иметь на экране кнопки для передвижения персонажа(это прям обязательно, поскольку будет ещё 1 доп кнопка), но проблема в том, что у меня не получается отобразить свой кастомный view элемент, который содержит canvas. Пробовал множеством способов, ни один не работает, всё компилится, запускается, но canvas не отображает, есть у кого туториал хороший или советы? Вот код kotlin-файла:
Kotlin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.example.my_diplom
 
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.os.Bundle
import android.util.AttributeSet
import android.view.View
import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
 
 
class PlayActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_play)
        val buttonmy: Button = findViewById(R.id.bGoMain)
        buttonmy.setOnClickListener{
            Chel()
        }
    }
 
    fun Chel() {
        val canvas = findViewById<View>(R.id.CustomCanvas) as CustomCanvas
        canvas.setWeightandRedraw(20.toFloat())
    }
 
    class CustomCanvas : View {
        constructor(context: Context) : this(context, null)
        constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
        constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
        }
        var weight: Float = 0.0f;
 
        override fun onDraw(canvas: Canvas?) {
            val paint: Paint = Paint()
            paint.apply {
                style = Paint.Style.FILL // стиль Заливка
                color = Color.RED // закрашиваем холст белым цветом
            }
            canvas?.drawRect(100F,100F,100F,100F,paint)
            drawBar(canvas)
            drawWeightKg(canvas, this.weight)
 
            invalidate()
        }
 
        fun setWeightandRedraw(_weight: Float) {
            weight = _weight;
            invalidate();
        }
 
        fun drawBar(canvas: Canvas?) {
 
        }
 
        fun drawWeightKg(canvas: Canvas?, weight: Float) {
 
        }
    }
 
 
    companion object {
        const val Total_Email = "total_email"
        const val URL = "url"
    }
 
}
А вот код xml-файла:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PlayActivity"
    tools:ignore="MissingClass">
 
 
    <Button
        android:id="@+id/bGoMain"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="600dp"
        android:gravity="center"
        android:orientation="vertical"
        android:text="В главное меню" />
 
    <view class="com.example.my_diplom.PlayActivity$CustomCanvas"
        android:id="@+id/CustomCanvas"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        app:strokeColor="@color/teal_700"
        app:strokeWidth="3dp"/>
 
 
 
</RelativeLayout>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2023, 11:45
Ответы с готовыми решениями:

Не отображается результат в canvas
Есть два одинаковых скрипта, которые содержаться в php коде. Они должны отображаться в разных canvas (canvas, canvas2), но почему то...

Не отображается изображение в Canvas
Здравствуйте! У меня возникла проблема с отображением картинки в Canvas. По клику по кнопке на форме я делаю так: var image = new...

Canvas - не отображается рисунок
Как добавить фоновый рисунок с помощью Canvas.create_image()? Если делать приложение на основе класса - не получается, если делаю вне...

1
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 105
28.05.2023, 14:26  [ТС]
по какой-то причине канвас отобразился только в разметке "androidx.constraintlayout.widget.Constr aintLayout"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2023, 14:26
Помогаю со студенческими работами здесь

Line Renderer не отображается на Canvas
мне нужен был эффект типа крюк-кошки, стал использовать Line Rednder, в окне сцены линия отображается, а в игре нет. Вроде нащел способ это...

Не отображается отрисовка на canvas на телефонах
Сделал отрисовку закрашенных квадратов с помощью кода: &lt;PaintBox&gt;.Canvas.DrawRect(Rect(Round(j*C_size), ...

Почему не отображается изображение canvas?
Добрый вечер! Подскажите пожалуйста, что нужно canvas, чтобы начать рисовать изображение? Загрузил CDN ссылки: &lt;script...

Почему не отображается картинка на canvas?
Извините, я пока чайник, не знал, куда написать, написал сюда. Помогите, почему не отображается картинка? &lt;HTML&gt; ...

ContextMenu, не отображается у Children Canvas
Подскажите начинающему ) ниже код... делаю окно, контентом делаю Canvas в нем делаю кнопку или что либо другое Poligon или Image не у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru