1

2 つのボタンを持つテーブル行があり、アニメーションを使用して、WebView が 3 秒間触れられなかった後、テーブル行全体をフェードアウトさせます。WebView がタッチされると、表の行がフェードインします。フェードアウトアニメーションの直後にテーブル行の可視性を View.GONE に設定し、フェードインアニメーションの直前に可視性を View.VISIBLE に設定しようとしましたが、役に立ちませんでした。View.VISIBLE に設定すると無視されたように見えました。テーブルの行が消えると、画面に触れても再表示されないためです。

TableRow tr;
Animation fade_in = new AlphaAnimation(0.0f, 1.0f);
Animation fade_out = new AlphaAnimation(1.0f, 0.0f);
WebView loss_source_dest;
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.loss);
    getStrings();
    findIDs();


    fade_in.setDuration(750);
    fade_out.setDuration(750);
    fade_out.setStartOffset(3000);
    initial_fade.setDuration(750);
    fade_in.setFillAfter(true);
    fade_out.setFillAfter(true);
    tr.startAnimation(fade_out);
    loss_source_dest.setOnTouchListener(new View.OnTouchListener() 
    {
        public boolean onTouch(View v, MotionEvent event) 
        {
            tr.setVisibility(v.VISIBLE);
            tr.startAnimation(fade_in);
            tr.startAnimation(fade_out);
            tr.setVisibility(v.GONE);
            return false;
        }
    });
4

2 に答える 2

0

わかりました、ここにはいくつかの問題があるようです。

1) setVisibility(View.GONE) が呼び出された後にボタンをクリック可能なままに修正するには、これに記載されている解決策があります... Android View with View.GONE はまだ onTouch と onClick を受け取ります。(これをソリューションに追加しようとしました)。

2) startAnimation メソッドの呼び出しはノンブロッキングであるため、どのアニメーションが終了したかを検出する AnimationListener を使用し、ボタンの可視性を View.GONE に設定するのが最善の解決策です。

TableRow tr;
Animation fade_in = new AlphaAnimation(0.0f, 1.0f);
Animation fade_out = new AlphaAnimation(1.0f, 0.0f);
WebView loss_source_dest;

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.loss);
getStrings();
findIDs();

fade_in.setDuration(750);

fade_out.setDuration(750);
fade_out.setStartOffset(3000);
fade_out.setAnimationListener(new AnimationListener(){
      public void onAnimationStart(Animation anim)
      {
      }
      public void onAnimationRepeat(Animation anim)
      {
      }
      public void onAnimationEnd(Animation anim)
      {
          tr.setVisibility(View.GONE);
      }
});
initial_fade.setDuration(750);
// fade_in.setFillAfter(true); (Removed)
// fade_out.setFillAfter(true); (Removed)

tr.startAnimation(fade_out);
loss_source_dest.setOnTouchListener(new View.OnTouchListener() 
{
    public boolean onTouch(View v, MotionEvent event) 
    {
        tr.setVisibility(v.VISIBLE);
        tr.startAnimation(fade_in);
        tr.startAnimation(fade_out);
        return false;
    }
});

お役に立てば幸いです:)

于 2012-07-06T04:33:52.953 に答える
0

wait() メソッドを使用するスレッドは、必要なことを行う必要があります。アニメーションだけでなく、View.GONE にもオフセットを設定する必要があります。

これは次のことにも役立ちます。

myButton.setEnabled(false);

必要に応じてボタンを有効/無効にするだけです。

于 2012-07-06T00:54:54.897 に答える