Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
#1

ImageButton setImageResource - Программирование Android

09.11.2012, 11:07. Просмотров 3796. Ответов 13
Метки нет (Все метки)

XML
1
2
3
4
5
6
7
8
<ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="onMyButton1Click"
        android:src="@drawable/ic_action_search" />
Java
1
2
3
4
5
6
7
 public void onMyButton1Click(View view)  
    {  
        ImageButton nbutton1 = (ImageButton)findViewById(R.id.imageButton1);
        nbutton1.setImageResource(R.drawable.ic_action_search); 
        boolean test = nbutton1.equals(getResources().getDrawable(R.drawable.ic_action_search));
        Toast.makeText(getApplicationContext(), "Значение - "+ test, Toast.LENGTH_LONG).show(); 
    }
Получаю - false
Я ведь явно ставлю R.drawable.ic_action_search
В чем подвох?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2012, 11:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ImageButton setImageResource (Программирование Android):

Картинка в imageButton (setImageResource) - Программирование Android
Вопрос такой: В приложении имеется кнопка-картинка (imageButton) при нажатии которой меняется ее фон: public void...

SetImageResource в CursorAdapter - Программирование Android
Здравствуйте. Создал свой CursorAdapter public class TodoCursorAdapter extends CursorAdapter { public TodoCursorAdapter(Context...

ImageButton - Программирование Android
Проблема такая. У меня таблица с ImageButton. Они вначале пустые. По нажатию засовывается картинка (мелкого разрешения). Проблема в том,...

не работает с ImageButton - Программирование Android
Приложение не запускается с ImageButton, пишет Application has stopped unexpectedly. please try again, но когда ставлю Button вместо...

Работа с ImageButton - Программирование Android
Hебят возникла такая проблема при замене Button на ImageButton, приложение вылетает с ошибкой при этому логи указывают на ошибку в методе...

Выдвижные ImageButton - Программирование Android
Добрый вечер! Пытаюсь решить задачу, как сделать так,чтобы имиджкнопку можно было задвинуть в сторонку чтобы просмотреть находящуюся под...

13
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2012, 11:19 #2
яблоко.equals(апельсин) - получаю false. в чем подвох?
0
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
09.11.2012, 12:57  [ТС] #3
Я понимаю, что Вы видите где..
А я нет...
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2012, 13:07 #4
ну вы же сравниваете яблоко с апельсином, ясно, что они не равны.
0
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
09.11.2012, 13:19  [ТС] #5
Вам если лень поправить код и показать, то так и надо отвечать или вообще не отвечать.
А демагогию и сравнения можете в другом месте разводить.
Форум не для этого... Хотя может для Вас...
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
09.11.2012, 14:17 #6
Hanty86, то что вы хотите сделать нехорошо. Скажите что вам в итоге надо сравнить и мы подскажем вам что делать.

выдаёт false потому что вы сравниваете объект класса ImageView с объектом класса Drawable.
0
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
09.11.2012, 16:20  [ТС] #7
YAUHEN, нужно было при нажатии узнать какое изображение на поверхности кнопки его ресурс или id, точно не знаю как правильно.

Например кнопка имеет изображение с цифрой 1 (R.drawable.image_1), при нажатии на кнопку "смотрим" какое изображение имеет кнопка если (R.drawable.image_1) = true, то ставим на кнопку изображение с цифрой 2 (R.drawable.image_2), далее если (R.drawable.image_2) = true, но ставим на кнопку изображение с цифрой 3 (R.drawable.image_3) и так допустим до 10 и снова с 1.
Может конечно и проще можно.

Например нужно 10 состояний кнопки с 10 разными изображениями:
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
int nClick =0.
btnOk.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 nClick++;
                 if (nClick==9) 
                 {
                     nClick=0;
                 }
                 if (nClick==0)
                 {
                     btnOk.setBackgroundResource(R.drawable.test_0);
                 }
                 
                 if (nClick==1)
                 {
                     btnOk.setBackgroundResource(R.drawable.test_1);
                 }
                 
                 if (nClick==2)
                 {
                     btnOk.setBackgroundResource(R.drawable.test_2);
                 }
 
.........................................................
 
                 Toast.makeText(getApplicationContext(), "nClick = "+nClick, Toast.LENGTH_LONG).show();
             }//end void onClick
Так проще получилось, чем читать какое изображение загружено.
Может только оптимизировать, если вдруг 100 положений будет, 100 раз if писать не красиво как то.
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2012, 19:47 #8
http://developer.android.com/referen...tDrawable.html
0
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
09.11.2012, 22:04  [ТС] #9
V0v1k,
Вы как всегда ссылками балуетесь..
Спасибо.
Пример бы не помешал.

Добавлено через 1 час 30 минут
Нашел пример , пробую повторить, появились вопросы.
Файл разметки:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="battery-progress"
    />
<ImageView
    android:id="@+id/battery" 
    android:layout_width="fill_parent"
    android:layout_height="40px"
    android:src="@drawable/images"
    />    
   
</RelativeLayout>
Подчеркивает android:src="@drawable/images"
error: Error: No resource found that matches the given name (at 'src' with value '@drawable/images')


Файл images.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?> 
 <level-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:maxLevel="0" android:drawable="@drawable/batt_10" /> 
    <item android:maxLevel="1" android:drawable="@drawable/batt_20" /> 
    <item android:maxLevel="2" android:drawable="@drawable/batt_30" /> 
    <item android:maxLevel="3" android:drawable="@drawable/batt_40" /> 
    <item android:maxLevel="4" android:drawable="@drawable/batt_50" /> 
    <item android:maxLevel="5" android:drawable="@drawable/batt_60" /> 
    <item android:maxLevel="6" android:drawable="@drawable/batt_70" />
    <item android:maxLevel="7" android:drawable="@drawable/batt_80" />
    <item android:maxLevel="8" android:drawable="@drawable/batt_90" />
    <item android:maxLevel="9" android:drawable="@drawable/batt_100" />
 </level-list>
Java Файл
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
package com.example.levellistdrawable;
 
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
 
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
 int i=0;
 ImageView v;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        v = (ImageView)findViewById(R.id.battery);
        int delay = 1000; // delay for 1 sec. 
        int period = 1000; // repeat every 10 sec. 
        Timer timer = new Timer(); 
        
        final Handler messageHandler = new Handler() {
 
         public void handleMessage(Message msg) {
         super.handleMessage(msg);
         if(msg.what == 0)
         {
          if(i<10)
          {
          i++;
          v.setImageLevel(i);
          }
          else
          {
          i=0;
          v.setImageLevel(i);
          }
         }
 
         }
         };
 
         timer.scheduleAtFixedRate(new TimerTask() 
             { 
                 public void run() 
                 { 
            
             messageHandler.sendEmptyMessage(0);
             
                 } 
             }, delay, period);
 
    }
}
Создал иконки batt_10 - batt_100 - они лежат в drawable-hdpi, drawable-ldpi, drawable-mdpi, drawable-xhdpi.
Создал файл images.xml в values - так?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2012, 22:54 #10
Цитата Сообщение от Hanty86 Посмотреть сообщение
images.xml в values - так?
нет, в drawable. просто drawable без приставок.
0
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
10.11.2012, 11:02  [ТС] #11
Цитата Сообщение от V0v1k Посмотреть сообщение
нет, в drawable. просто drawable без приставок.
Спасибо, работает.

Возникли вопросы.
При нажатия на ImageView v1 устанавливаем ему изображение так:
Java
1
((ImageView) arg).setImageLevel(x);
А как установить изображение в ImageView v1 допустим в onCreate()
Что бы явно указать, чтобы в ImageView ( v1 = (ImageView)findViewById(R.id.imageView1))
загрузить 5 картинку со списка:
Java
1
 <item android:maxLevel="5" android:drawable="@drawable/batt_50" />
int i =5;
ImageView(v1).setImageLevel(i) - типа того
с синтаксисом помогите


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
package com.example.levellistdrawable;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
 int i=0;
 int x=0;
 ImageView v1;
 ImageView v2;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        v1 = (ImageView)findViewById(R.id.imageView1);
        v2 = (ImageView)findViewById(R.id.imageView2);
 
        v1.setOnClickListener(new OnClickListener() {
            public void onClick(View arg) {
                
                 if(i<10)
                  {
                  i++;
                  ((ImageView) arg).setImageLevel(i);
                  }
                  else
                  {
                  i=0;
                  ((ImageView) arg).setImageLevel(i);
                  } 
                 Toast.makeText(getApplicationContext(), "i = "+i, Toast.LENGTH_SHORT).show();
            }
            
        });
        
        v2.setOnClickListener(new OnClickListener() {
            public void onClick(View arg) {
                 
                 if(x<4)
                  {
                  x++;
                  ((ImageView) arg).setImageLevel(x);
                  }
                  else
                  {
                  x=0;
                  ((ImageView) arg).setImageLevel(x);
                  } 
                 Toast.makeText(getApplicationContext(), "x = "+x, Toast.LENGTH_SHORT).show();
            }
            
        });
 
    }
}
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
11.11.2012, 21:02 #12
эм, v1.setImageLevel(5);
В чем проблема?
0
kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
14.11.2012, 10:51 #13
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
public class NumericButton extends Button implements OnClickListener{
 
    private Context context;
    private int value = 0;  
    private ArrayList<Integer> figureResources = new ArrayList<Integer>();
    private int currentFigureIndex = 0;
 
    public NumericButton(Context context) {
        super(context);
        this.context = context;
        init();
    }   
    
    public NumericButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        init();
    }
    
    public NumericButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.context = context;
        init();
    }
    
    private void init() {
        
        figureResources.add(R.drawable.simbols_0);
        figureResources.add(R.drawable.simbols_1);
        figureResources.add(R.drawable.simbols_2);
        figureResources.add(R.drawable.simbols_3);
        figureResources.add(R.drawable.simbols_4);
        figureResources.add(R.drawable.simbols_5);
        figureResources.add(R.drawable.simbols_6);
        figureResources.add(R.drawable.simbols_7);
        figureResources.add(R.drawable.simbols_8);
        figureResources.add(R.drawable.simbols_9);      
                
        setOnClickListener(this);
 
    }
 
    public void onClick(View v) {
        currentFigureIndex ++;
        if (currentFigureIndex >= 10) 
                currentFigureIndex = 0;
        
        setImageResource(figureResources.get(currentFigureIndex));  
                value = currentFigureIndex;
    }
    
    public int getValue(){
        return value;
    }
 
}
Может поможет - вот тебе объект - наследник Button, который каждое нажатие меняет картинку с символом
0
danil031997
18 / 18 / 3
Регистрация: 07.06.2013
Сообщений: 49
03.02.2014, 20:19 #14
А можно увидеть полный код с (.xml, .java) приблизительно как менять картинки по нажатии на кнопку? Просто новичок еще

Вот что-то с этим, чтобы потом дописать проверочку:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
              if (nClick==9) 
                 {
                     nClick=0;
                 }
                 if (nClick==0)
                 {
                     btnOk.setBackgroundResource(R.drawable.test_0);
                 }
                 
                 if (nClick==1)
                 {
                     btnOk.setBackgroundResource(R.drawable.test_1);
                 }
                 
                 if (nClick==2)
                 {
                     btnOk.setBackgroundResource(R.drawable.test_2);
                 }
0
03.02.2014, 20:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 20:19
Привет! Вот еще темы с ответами:

Нажатие ImageButton - Программирование Android
Хочу определить ImageButton (остается в нажатом положении/ в фокусе/ не нажата) и у меня не хочет работать ,вылазит ошибка ,подскажите...

ImageButton hover - Программирование Android
Добрый вечер. Как сделать, если ты нажал на кнопку в imagebutton чтобы иконка меняло цвет. Вот исходник Сама иконка ...

Перемещение ImageButton - Программирование Android
Пытаюсь реализовать такую задачу: есть imagebutton в исходном состоянии (картинка с координатами x1, y1). При нажатии на картинку...

ImageButton с картинкой из файла - Программирование Android
Доброе время суток, подскажите новичку, плиз, можно ли создать кнопку с загружаемой картинкой? Вроде классическое создание...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.