Я нашел ссылку this, в которой говорится, как я мог бы сделать эффект свечения на моем ImageButton
. Поэтому всякий раз, когда пользователь нажимает ImageButton
, вызывается функция onTouchEvent()
и там я вызываю функцию setImageBitmap()
. Проблема в том, что эта функция (setImageBitmap()
), похоже, не имеет никакого эффекта.Почему setImageBitmap не влияет на пользовательский ImageButton?
Что работает:
1) До сих пор я продлил ImageButton
ниже
// Pen.java
public class Pen extends ImageButton {
public Pen(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
System.out.println("Now I am setting Pen");
return true;
}
}
Тогда внутри деятельности создать Pen
(пользовательские ImageButton
) экземпляра, определить setGlow()
и вызвать setImageBitmap()
из экземпляра Pen
.
//MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Pen myImgbutton;
myImgbutton = (Pen) findViewById(R.id.pen);
myImgbutton.setImageBitmap(setGlow(R.drawable.pen));
}
}
public Bitmap setGlow(int resourceId) {
......
}
Что не работает:
1) Все же, как и выше (расширяя ImageButton в андроиде), но на этот раз я вызываю функцию setImageBitmap изнутри onTouchEvent(). В этом случае я должен определить функцию setGlow в внутри Pen.java
// Pen.java
public class Pen extends ImageButton {
public Pen(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
System.out.println("Now I am setting Pen");
// Here I say to apply the glow effect to the image
setImageBitmap(setGlow(R.drawable.pen));
return true;
}
public Bitmap setGlow(int resourceId) {
....
}
}
Затем в XML-файле я:
.....
<com.example.testsetimagebmp.Pen
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pen"
android:background="@drawable/pen" />
....
Наконец в MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// ....
}
Вызывается ли 'onTouchEvent'? – shhp
@shhp Да, это – pokche
Вы имеете в виду, если вы вызываете 'setImageBitmap' в' MainActivity', он работает. Однако это не работает в 'onTouchEvent'? – shhp