özel bir görünüm yapmak o:
public class FadeView extends FrameLayout {
private long mFadeDelay = 1000;
private ImageView mFirst;
private ImageView mSecond;
private boolean mFirstShowing;
public FadeView(Context context) {
super(context);
init(context);
}
public FadeView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public FadeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context c){
mFirst = new ImageView(c);
mSecond = new ImageView(c);
mFirst.setAlpha(1.0f);
mSecond.setAlpha(0.0f);
mFirstShowing = true;
addView(mFirst);
addView(mSecond);
}
public void setFadeDelay(long fadeDelay) {
mFadeDelay = fadeDelay;
}
public void ShowImage(Drawable d){
if(mFirstShowing){
mSecond.setImageDrawable(d);
mSecond.animate().alpha(1.0f).setDuration(mFadeDelay);
mFirst.animate().alpha(0.0f).setDuration(mFadeDelay);
}else {
mFirst.setImageDrawable(d);
mSecond.animate().alpha(0.0f).setDuration(mFadeDelay);
mFirst.animate().alpha(1.0f).setDuration(mFadeDelay);
}
mFirstShowing = !mFirstShowing;
}
}
Kullanımı:
public class test extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final FadeView fw = new FadeView(this);
setContentView(fw);
fw.setOnClickListener(new View.OnClickListener() {
Drawable d1 = getResources().getDrawable(android.R.drawable.ic_dialog_alert);
Drawable d2 = getResources().getDrawable(android.R.drawable.ic_dialog_info);
boolean flag;
@Override
public void onClick(View view) {
if(flag){
fw.ShowImage(d1);
}else {
fw.ShowImage(d2);
}
flag = !flag;
}
});
}
}
Bunu, android> = API9 –
ile nasıl başarabilirim? Cevabınızı doğru cevap olarak seçiyorum. Ancak, ShowImage eyleminin UI Thread'de yürütülmesi gerektiğini belirtmek gerektiğini düşünüyorum. Yani, kodu düzeltmeniz ve bir aktiviteyi parametre olarak veya herhangi bir şekilde geçirmeniz güzel olurdu. else} ... public void showImage (son Drawable d) { mActivity.runOnUiThread (yeni Runnable() { @Override public void run() { if (mFirstShowing) { : gibi bir şeyle animasyon çağrısı yapmak { ...} } }); } –
@AnibalItriago Görünüm tipleri ile etkileşime giren herhangi bir kod ana iş parçacığı üzerinde çalıştırılmalıdır. View class ve onun soyundan gelenler, içsel olarak bu işlem yapmazlar, daha ziyade kullanıcıyı uygun iş parçacığı üzerinde aramaya zorlarlar. –