Форум программистов, компьютерный форум CyberForum.ru

Динамическая кнопка с картинкой - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Почему не отрисовывается картинка? http://www.cyberforum.ru/android-dev/thread1661928.html
Написал класс, наследующий ViewSurface MainView. Написал метод onDraw, в котором поле заливается белым цветом, и вызывается метод draw спрайта. Создал класс с bitmap'ом для спрайтовой анимации. Написал для него метод draw. Вызываю его, как написал выше, в методе onDraw класса MainView. Написал класс потока для отрисовки MainThread. Cловом, всё, как в книжках учат. :) Но!.. Если вызываю из...
Программирование Android WebView упорно отказывается выполнять JS Добрый день, форумчане! Наверное перейду сразу к проблеме. Есть код WebView mWebView; mWebView = (WebView)frag2.findViewById(R.id.webplat); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setBackgroundColor(Color.parseColor("#f7e16b")); http://www.cyberforum.ru/android-dev/thread1661870.html
Программирование Android Ошибка EndofMemory в Android
Иногда, при переходе на другую активность вылетает ошибка "EndofMemory". Приложение закрывается и в тот же момент открывается на той же активности. Какие могут быть варианты решения этой проблемы? Нашел только вариант через .bin, но что-то мне не очень понятно, что мы там меняем. Заранее спасибо!
The connection to adb is down and a severe error has occured. you must restart adb and eclipse Программирование Android
Впервый раз лабы запускала, как только сделала - все было нормально.. А теперь выбивает подобное сообщение: the connection to adb is down and a severe error has occured. you must restart adb and eclipse вышла из эклипса - перезагрузила, запустила вновь, но все тоже.. в интернете на подобную ошибку очень мало инфы. не могу разобраться что делать то.. помогите человечку путным советом..
Программирование Android ViewPager (Tabbed activity) как добавить данные на сраницы? http://www.cyberforum.ru/android-dev/thread1661749.html
Среда андройд студио. "я создал" проект из коробки tabbed activity, автоматом создалось 2 xml, main отвечает за виджеты ,а второй за данные,поправьте меня,если не так что-то, на fragment _main я разместил свои данные,свайп в право работает и влево так же и вот что я хочу спросить: как мне добавить на второй,3,4 ит.д экраны другие данные? Нашел в классе PlaceholderFragment такой код:...
Программирование Android Видео в приложении Всем доброго времени суток. Намереваюсь создать приложение с видео контентом внутри, что бы можно было в любой момент его просматривать, без интернета. Разумно ли будет хранить видео внутри приложения? или же лучше воспроизводить его на устройстве пользователя через интернет. Общая длина всех видео роликов будет примерно мин. 40. подробнее

Показать сообщение отдельно
Pablito
2420 / 1865 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
16.02.2016, 16:04     Динамическая кнопка с картинкой
я начал делать пример и нашел новый для меня лаяут
вобщем я сделал небольшой примерчик, только просьба - сделать не бездумно, а прочитать внимательно и попытаться понять что там происходит
1. первое что надо сделать это подключить новый лаяут в файле build.gradle
XML
1
compile 'com.android.support:gridlayout-v7:23.1.1'
2. пеперь разметка активити, кажется что текста много, но на самом деле там главное на что надо смотреть - это GridLayout с id="field". Это типа поле для кнопок. Остальной обвес из лаяутов потом можно выкинуть, но в примере они нужны для показа кнопок типа Старт и текстовых полей.
Если надо будет делать свою разметку от можно просто скопировать GridLayout и все.
Кликните здесь для просмотра всего текста
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
 
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Счет:" />
 
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="end"
            android:text="Время 00:00" />
 
    </LinearLayout>
 
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
 
        <android.support.v7.widget.GridLayout
            android:id="@+id/field"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center" />
    </FrameLayout>
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="START" />
 
</LinearLayout>

инфа для low-lvl троллей: да, я знаю что можно было сделать лаяуты по-другому и не обязательно делать все на linear, но вот мне так захотелось

3. активити
добавляем в импорты
Java
1
import android.support.v7.widget.GridLayout;
где-то в onCreate() мы находим наш лаяут с id ="field" и вызываем метод в котором происходит магия
Java
1
2
        GridLayout field = (GridLayout) findViewById(R.id.field);
        createButtons(10, 10, field);
и сам метод + слушатель, просто копируем куда-то в активити, можно почитать комментарии, но в алгоритм можно не вникать на начальном этапе
Кликните здесь для просмотра всего текста
Java
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
    private void createButtons(final int columns, final int rows, final GridLayout field) {
        // post action надо, потому что дальше в коде наше поле делаем квадратным
        field.post(new Runnable() {
            @Override
            public void run() {
                ViewGroup.LayoutParams fieldParams = field.getLayoutParams(); // берем параметры поля (лаяута)
                int size = Math.min(field.getWidth(), field.getHeight()); // определяем меньшую сторону
                fieldParams.width = size; // делаем стороны одинаковыми, квадрат
                fieldParams.height = size;
                field.setLayoutParams(fieldParams); // применяем новые параметры
                field.setColumnCount(columns); // задаем полю количество столбцов
                field.setRowCount(rows); // и строк
                // цикл в котором создаются кнопки
                for (int r = 0; r < rows; r++) {
                    for (int c = 0; c < columns; c++) {
                        Button btn = new Button(field.getContext());
                        btn.setOnClickListener(listener); // вешаем слушателя 
                        btn.setTag(c + " " + r); // назначаем tag на вьюшку, пригодится когда надо будет определить позицию на поле 
                        btn.setTextSize(7); // это можно убрать
                        btn.setText("" + (c + 1) * (r + 1)); // проставляем цифры на кнопках, тоже потом в топку
                        GridLayout.LayoutParams lp = new GridLayout.LayoutParams(); // создаем параметры лаяута для кнопки
                        lp.width = 0; // так надо потому что ниже мы указываем вес кнопок = 1, они будут сами высчитывать размеры
                        lp.height = 0;
                        lp.columnSpec = GridLayout.spec(c, 1f); // вес и позиция кнопки по горизонтали
                        lp.rowSpec = GridLayout.spec(r, 1f); // и по вертикали
                        field.addView(btn, lp); // добавляем кнопку на поле 
                    }
                }
            }
        });
    }
 
    private final View.OnClickListener listener = new View.OnClickListener() { // слушатель для кнопок (с) кэп
        @Override
        public void onClick(View v) {
            String[] arr = v.getTag().toString().split(" ");
            int col = Integer.valueOf(arr[0]);
            int row = Integer.valueOf(arr[1]);
            Toast.makeText(getBaseContext(), "Button Pressed   col: " + col + " row: " + row, Toast.LENGTH_SHORT).show();
        }
    };

4. PTOFIT
и что получилось
Динамическая кнопка с картинкой

И потом, я бы заменил кнопки на ImageView или вообще на свои, кастомные вьюшки чтобы удобно менять картинки на них.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru