gpt4 book ai didi

java - 更改 ImageButton Src 图像 OnClick

转载 作者:行者123 更新时间:2023-12-01 11:11:48 26 4
gpt4 key购买 nike

我一直在尝试更改我的 ImageButton 源 OnClick 并在 500 毫秒后将其更改回来。这是代码(还有更多 ImageButtons,这只是其中一个 ImageButtons 的完整示例):[更新]

package com.example.apptest;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.mainactivitylayout);

ImageButton Next=(ImageButton)findViewById(R.id.nexticon);
// Here there are more buttons //

Next.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {
Intent splash = new Intent(MainActivity.this, NextActivity.class);
startActivity(splash);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
ImageButton.setImageResource(R.mipmap.imgbtnonclick);
Handler h =new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
findViewById(R.id.nexticon);
ImageButton.setImageResource(R.mipmap.imgbtn);
}
}, 500);
}
});
}

它不起作用,消息等级构建显示:[更新]

Error:(34, 28) error: non-static method setImageResource(int) cannot bereferenced from a static context

Error:(40, 36) error: non-static method setImageResource(int) cannot bereferenced from a static context

希望你能帮助我。谢谢!

最佳答案

您正在尝试将可绘制对象分配给资源属性。使用 setBackground 代替。

ImageButton.setBackground(getResources().getDrawable(R.mipmap.imgbtn));

我看到的另一件事是 ImageButton 是一个类,这就是为什么您会收到有关静态上下文的错误消息。您应该有一个要使用 view.findViewById() 更改图像的按钮的引用

您可以使用 ButterKnife 轻松绑定(bind)按钮并将方法应用于按钮组。

绑定(bind)按钮:

@Bind({R.id.nexticon, R.id.nexticon2, R.id.nexticon3, R.id.nexticon4}) List<View> allButtons;

定义操作:

static final ButterKnife.Action<View> changeImageSource = new ButterKnife.Action<View>() {
@Override public void apply(View view, int index) {
ImageButton.setImageResource(R.mipmap.imgbtnonclick);
Handler h =new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
findViewById(R.id.nexticon);
ImageButton.setImageResource(R.mipmap.imgbtn);
}
}, 500);
}
};

执行操作:

Next.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {
Intent splash = new Intent(MainActivity.this, NextActivity.class);
startActivity(splash);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
ButterKnife.apply(allButtons, ADDLISTENER);
}
});

我仍然认为您想要做的最好是使用 xml 中定义的背景选择器,然后暂时更改按钮的状态。这是一个例子:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/buttonok_pressed"
android:state_enabled="false" />

<item android:drawable="@drawable/buttonok" />

</selector>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:minWidth="@dimen/button_minwidth"
>

<corners android:radius="@dimen/button_radius"/>

<gradient
android:angle="45"
android:centerX="35%"
android:centerColor="#0070DC"
android:startColor="#00A0E2"
android:endColor="#0001CF"
android:type="linear"
/>

<padding
android:left="@dimen/button_paddingH"
android:top="@dimen/button_paddingV"
android:right="@dimen/button_paddingH"
android:bottom="@dimen/button_paddingV"
/>


<stroke
android:width="2dp"
android:color="#0000FF"
/>

</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:minWidth="@dimen/button_minwidth">

<corners android:radius="@dimen/button_radius"/>

<gradient
android:angle="45"
android:centerX="35%"
android:centerColor="#0097FC"
android:startColor="#00D5FF"
android:endColor="#0011FF"
android:type="linear"
/>

<padding
android:left="@dimen/button_paddingH"
android:top="@dimen/button_paddingV"
android:right="@dimen/button_paddingH"
android:bottom="@dimen/button_paddingV"
/>

<stroke
android:width="2dp"
android:color="#0000FF"
/>

</shape>

此外,我建议您不要追求快速结果,或者只是让它发挥作用并尝试不同的东西。我猜您正在开始使用 Android 进行开发,并且目前专注于学习和实验。

关于java - 更改 ImageButton Src 图像 OnClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32266426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com