Android 当满足条件时,如何以编程方式更改ImageButton src目标?
我有一个学校项目,我正在尝试让一个手电筒应用程序运行。对于开/关图像按钮,我希望有4个自定义图像 如果手电筒关闭: -打开_on.png(默认值) -打开\u pressing.png(按下状态=真) 如果手电筒打开: -关闭_off.png(默认设置) -关闭\u pressing.png(按下状态=真) 我希望将ImageButton src目标更改为“on_selector.xml”和“off_selector.xml”。最初,我可以Android 当满足条件时,如何以编程方式更改ImageButton src目标?,android,imagebutton,Android,Imagebutton,我有一个学校项目,我正在尝试让一个手电筒应用程序运行。对于开/关图像按钮,我希望有4个自定义图像 如果手电筒关闭: -打开_on.png(默认值) -打开\u pressing.png(按下状态=真) 如果手电筒打开: -关闭_off.png(默认设置) -关闭\u pressing.png(按下状态=真) 我希望将ImageButton src目标更改为“on_selector.xml”和“off_selector.xml”。最初,我可以setImageResource()更改默认按钮图像。现
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>
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个小时了,在任何地方都找不到答案(可能不是问正确的问题?),所以非常感谢您的帮助
谢谢 是否要求它必须是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_折叠) 使用以下属性设置图像时:
android:src=“@drawable/on_选择器”
您需要使用以下命令动态更改图像:
ImageButton myButton = (ImageButton) findViewById(R.id.my_button);
myButton.setImageResource(R.drawable.my_button_image);
非常感谢您的快速回答和解决方案。将“ImageButton”xml引用设置为“background”而不是“src”,这一切都不同。
ImageButton myButton = (ImageButton) findViewById(R.id.my_button);
myButton.setImageResource(R.drawable.my_button_image);