Ho trovato il collegamento this che indica come ho potuto rendere l'effetto bagliore sul mio ImageButton
. Quindi ogni volta che l'utente preme il ImageButton
viene chiamata la funzione onTouchEvent()
e lì chiamo la funzione setImageBitmap()
. Il problema è che questa funzione (setImageBitmap()
) sembra non avere alcun effetto.Perché setImageBitmap non ha alcun effetto su ImageButton personalizzato?
ciò che funziona:
1) Finora ho esteso il ImageButton
come di seguito
// 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;
}
}
Poi all'interno di attività creo Pen
(personalizzato ImageButton
) esempio, definire setGlow()
e chiamare setImageBitmap()
da istanza di 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) {
......
}
cosa non funziona:
1) Tutto come sopra (l'estensione di un'ImageButton in Android), ma questa volta sto chiamando la funzione setImageBitmap dall'interno di onTouchEvent(). Per questo caso ho definire la funzione setGlow in all'interno 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) {
....
}
}
Poi nel file xml che faccio:
.....
<com.example.testsetimagebmp.Pen
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pen"
android:background="@drawable/pen" />
....
Infine nel MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// ....
}
chiamato 'onTouchEvent'? – shhp
@shhp Sì, è – pokche
Vuoi dire se chiami 'setImageBitmap' in' MainActivity', funziona. Tuttavia non funziona in 'onTouchEvent'? – shhp