Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27

кнопка-картинка

03.10.2012, 09:53. Показов 4907. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как сделать чтоб при нажатии на кнопку (кнопка-картинка ImageButton) через две секунды картинка этой кнопки менялась на другую, помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.10.2012, 09:53
Ответы с готовыми решениями:

Кнопка в несколько строк (заголовок и описание) и картинка (слева или справа)
Как сделать такую "многофункциональную" кнопку? Заголовок должен быть жирным шрифтом.

Картинка-кнопка
Простите за тупой вопрос) вот код страницы <!doctype html> <html> <head> <meta charset="utf-8"> <title>Персональный...

Кнопка - Картинка
сделал кнопку - картинку, cвойство value = "" но поверх кртинки всё равно красуется надпись Submit Query! как ее убоать!?

13
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
05.10.2012, 00:08
присоединяешь onClickListener, там в методе onClick пишешь:
Java
1
2
3
4
5
6
imageView.postDelayed(new Runnable() {
            
            public void run() {
                imageView.setImageResource(R.drawable.new_image);           
            }
        }, 2000);
0
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
05.10.2012, 14:23  [ТС]
Цитата Сообщение от kvaka Посмотреть сообщение
присоединяешь onClickListener, там в методе onClick пишешь:
Java
1
2
3
4
5
6
imageView.postDelayed(new Runnable() {
            
            public void run() {
                imageView.setImageResource(R.drawable.new_image);           
            }
        }, 2000);
а можно как нибудь в потоке сделать??
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.10.2012, 22:17
можно делать только в потоке.
0
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
05.10.2012, 22:44
а можно как нибудь в потоке сделать??
Это ты и делаешь в потоке UI, просто с отсрочкой, как и хотел. Чем тебя такой вариант смущает?
0
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
06.10.2012, 03:46  [ТС]
Цитата Сообщение от kvaka Посмотреть сообщение
Это ты и делаешь в потоке UI, просто с отсрочкой, как и хотел. Чем тебя такой вариант смущает?
мне просто нужно просчитывать каждую секунду и выводить в текст
то есть прошла секунда текст обновился "1"
прошла еще секунда текст обновился "2" картинка поменялась
условие смены картинки у меня есть не могу только реализовать смену по веремени меня крешует как раз на смене картинки в моем коде.
ваш код работает но я не могу понять куда приписать текстовик чтоб онобновлялся каждую секунду с текстом времени.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.10.2012, 04:26
вероятно, у вас крешует потому что вы пытаетесь изменить UI из не UI потока (в логах все написано).
способы делать что-то в UI потоке:
handler;
activity.runOnUiThread();
view.postDelayed, view.postDelayed;
AsyncTask.

вот пример

Java
1
2
3
4
5
6
7
8
Runnable r = new Runnable() {
 
            public void run() {
                textView.setText(String.valueOf(i));
                textView.postDelayed(r, 2000);
            }
        };
        textView.postDelayed(r, 2000);
0
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
06.10.2012, 04:51  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
вероятно, у вас крешует потому что вы пытаетесь изменить UI из не UI потока (в логах все написано).
способы делать что-то в UI потоке:
handler;
activity.runOnUiThread();
view.postDelayed, view.postDelayed;
AsyncTask.

вот пример

Java
1
2
3
4
5
6
7
8
Runnable r = new Runnable() {
 
            public void run() {
                textView.setText(String.valueOf(i));
                textView.postDelayed(r, 2000);
            }
        };
        textView.postDelayed(r, 2000);
все равно че то не то
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
Runnable r = new Runnable() {
 
                    public void run() {
                        count++;
                        tex.postDelayed(r, 1000);
                        result = rand.nextInt(51);
                        tex.setText("бросок..."+count);
                if(count==2){
                    tex.removeCallbacks(r);
                    if (result>25){
                        but.setImageResource(R.drawable.orel); крэш
                        
                        tex.setText("орел");  
                    }
                    else
                    {
                        but.setImageResource(R.drawable.reshka); крэш
                        
                        tex.setText("решка");  
                    }
                count=0;
                }
                
        
        
        
                
             
                    }};
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.10.2012, 05:06
весь код покажите
0
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
06.10.2012, 05:30  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
весь код покажите
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
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import java.util.Random;
import android.widget.ImageButton;
import android.widget.TextView;
import java.lang.ref.WeakReference;
 
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.app.Activity;
import android.graphics.Bitmap;
import android.widget.ImageView;
 
public class MainActivity extends Activity {
     final Random rand = new Random();
     public static int result;
     private static final int MSG_REFRESH_UI = 100500;
        private TextView tex;
        //private RefreshTextView task;
        private Handler uiHandler;
        private int count=0;
        private ImageView but;
        
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ImageView but = (ImageView)findViewById(R.id.imageButton1);
        tex = (TextView)findViewById(R.id.textView2);
        but.setImageResource(R.drawable.fon);
        tex.setText("нажми на кнопку, сделай выбор");
        uiHandler = new Handler();
        //task = new RefreshTextView();
        
        but.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                but.postDelayed(r,1);
                
                /*but.postDelayed(new Runnable() {
                    
                    public void run() {
                        but.setImageResource(R.drawable.reshka);           
                    }
                }, 2000);*/
         
                
            }});
       
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
   // private class RefreshTextView implements Runnable{
        
    Runnable r = new Runnable() {
 
                    public void run() {
                        count++;
                        tex.postDelayed(r, 1000);
                        result = rand.nextInt(51);
                        tex.setText("бросок..."+count);
                if(count==2){
                    tex.removeCallbacks(r);
                    if (result>25){
                        but.setImageResource(R.drawable.orel);
                        
                        tex.setText("орел");
                    }
                    else
                    {
                        but.setImageResource(R.drawable.reshka);
                        
                        tex.setText("решка");
                    }
                count=0;
                }
                
        
        
        
                
             
                    }};
   }
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.10.2012, 13:45
выложите проект.
0
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
07.10.2012, 00:54
Ты при создании класса объявляешь поле
Java
1
private ImageView but;
а потом в ОнКрит объявляешь одноименную переменную:

Java
1
final ImageView but = (ImageView)findViewById(R.id.imageButton1);
в результате - поле, объявленное первым остается null.

И еще: вот этот кусок
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Runnable r = new Runnable() {
 
                    public void run() {
                        count++;
                        tex.postDelayed(r, 1000);
                        result = rand.nextInt(51);
                        tex.setText("бросок..."+count);
                if(count==2){
                    tex.removeCallbacks(r);
                    if (result>25){
                        but.setImageResource(R.drawable.orel);
                        
                        tex.setText("орел");
                    }
                    else
                    {
                        but.setImageResource(R.drawable.reshka);
                        
                        tex.setText("решка");
                    }
                count=0;
                }
                    }};
у тебя не в методе, а значит r - поле класса. И значение ему присваивается в момент создания экземпляра класса, в тот момент часть объявленных полей не имеют присвоенных значений, поэтому тут будет НуллПоинтерЕкссепшн.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.10.2012, 01:17
да, с but будет НуллПоинтерЕкссепшн здесь все верно, не понятно почему Androot логи не смотрит.
а вот что с r не так я не понял...

Добавлено через 4 минуты
Цитата Сообщение от kvaka Посмотреть сообщение
в тот момент часть объявленных полей не имеют присвоенных значений,
это не имеет значения...

Добавлено через 7 минут
главное чтобы в момент использования были не нулл
0
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
07.10.2012, 14:50
ну да, тут я наверно не прав...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2012, 14:50
Помогаю со студенческими работами здесь

Кнопка и картинка
Здраствуйте. Столкнулся с такой проблемой, верстаю сайт с pdf файла. на картинке кнопка submit серого цвета, прямоугольная и маленького...

Кнопка картинка
Я не могу создать картинку на кнопке, можете помочь? Готовый проект

Картинка-кнопка
Есть код: //Импортируем картинки private var Fullek:Class; //Вывод картинок var Fullek:Bitmap = new Fullek(); Fullek.x =...

Фон: Кнопка VS Картинка
Добрый день форумчане, может подскажите: долблюсь над эстетической стороной программы, возник вопрос в графический возможностях кнопки,...

Кнопка-картинка в текстовом поле!
Приветствую всех знатоков! :declare: Прошу помочь найти наилучши способ вставки картинки (в качестве кнопки) в поле формы Search....


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru