Intereting Posts
Портирование приложения iphone. Если бы вы снова начали свое приложение с нуля, что бы вы сделали по-другому? Идея Intellij, показывающая ошибку: не удалось создать виртуальную машину Java Пример прослушивателя в Интернете Android Android Найти UUID конкретного устройства Bluetooth Изменить ориентацию без вызова onCreate Выпадающая высота AutoCompleteTextView ограничена во всплывающем диалоговом окне Открыть URL-адрес кнопки ok в андроиде Кордова: не удалось установить apk после обновления Android до 5.1.1 Nexus 5 Стратегия кэширования для Android-приложения Use-feature overruling uses-permission? Как добавить пользовательское состояние кнопки Запись видео на Android с использованием JavaCV (Обновлено 2014 02 17) Тип ввода для экрана редактирования EditText? Android RecyclerView Adapter Количество элементов возвращается 0 при модульном тестировании Можно ли установить xampp на мобильное устройство, например, на вкладку галактики или ipad?

Как программно изменить цель ImageButton src при выполнении условия?

У меня есть школьный проект, в котором я пытаюсь получить приложение для фонариков. Для включения / выключения ImageButton я хочу иметь 4 пользовательских изображения.

Если фонарик выключен: -turn_on.png (по умолчанию) -turn_on_pressing.png (состояние нажато = true)

Если включен фонарик: -turn_off.png (по умолчанию) -turn_off_pressing.png (состояние нажато = true)

Я надеюсь изменить цель ImageButton src для изменения между «on_selector.xml» и «off_selector.xml». Первоначально я смог setImageResource() изменить изображения кнопок по умолчанию. И теперь, когда я пытаюсь добавить свои собственные изображения на прессе, у меня очень трудное время.

Application.java:

 import android.app.Activity; import android.content.pm.PackageManager; import android.graphics.Color; import android.os.Bundle; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.view.View; import android.widget.ImageButton; import com.jrr.flashlight.R; public class Application extends Activity { ImageButton flashControl; Camera camera; Parameters params; private boolean hasFlash; private boolean isFlashOn = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.application_layout); flashControl = (ImageButton) findViewById(R.id.flashButtonOn); flashControl.setOnClickListener(flashControlListener()); hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); //sets value for boolean hasFlash } private View.OnClickListener flashControlListener() { return new View.OnClickListener(){ @Override public void onClick(View v) { if (!isFlashOn){ findViewById(R.id.appbackground).setBackgroundColor(Color.WHITE); if(hasFlash){ params.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(params); camera.startPreview(); } isFlashOn = true; } else { findViewById(R.id.appbackground).setBackgroundColor(Color.BLACK); if(hasFlash){ params.setFlashMode(Parameters.FLASH_MODE_OFF); camera.setParameters(params); camera.stopPreview(); } isFlashOn = false; } } }; } @Override protected void onResume() { super.onResume(); camera = Camera.open(); params = camera.getParameters(); } @Override protected void onPause() { super.onPause(); if(camera!=null) { camera.release(); camera = null; } findViewById(R.id.appbackground).setBackgroundColor(Color.BLACK); } 

application_layout.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/appbackground" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="0dp" android:layout_margin="0dp" android:background="#000000"> <ImageButton android:background="#80000000" android:layout_width="wrap_content" android:layout_height="wrap_content" <!--I want to be able to change the following line--> android:src="@drawable/on_selector" android:id="@+id/flashButtonOn" android:layout_gravity="center"/> </LinearLayout> 

on_selector.xml:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/turn_on_pressing" /> <!-- pressed --> <item android:drawable="@drawable/turn_on" /> <!-- default --> </selector> 

off_selector.xml:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/turn_off_pressing" /> <!-- pressed --> <item android:drawable="@drawable/turn_off" /> <!-- default --> </selector> 

Является ли то, что я хочу сделать, даже возможно, или есть другой способ сделать это? Я застрял на этом около 3 часов и не могу найти ответ в любом месте (возможно, не спрашивая правильный вопрос?), Поэтому любая помощь оценивается!

Благодаря!

Solutions Collecting From Web of "Как программно изменить цель ImageButton src при выполнении условия?"

Это требование, чтобы он был imageResource? Вместо этого вы можете попробовать использовать backgroundResource.

 ImageButton flashButtonOn = (ImageButton) findViewById(R.id.flashButtonOn); flashButtonOn.setBackgroundResource(R.drawable.on_selector); 

Или попробуйте

 flashButtonOn.setImageResource(R.drawable.replacementGraphic); 

Он должен быть «setImageResource», «setBackgroundResource» изменяет фон, а не src. btn_MyButton.setImageResource (R.drawable.button_bg_selector_collapsed);

При настройке изображения используйте следующий атрибут:

android:src="@drawable/on_selector"

Для динамического изменения изображения вам необходимо использовать следующее:

 ImageButton myButton = (ImageButton) findViewById(R.id.my_button); myButton.setImageResource(R.drawable.my_button_image);