2015-10-14 83 views
1

我有一個FrameLayout裏一個DelayedConfirmationView:延遲確認按鈕動畫

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.wearable.view.DelayedConfirmationView 
    android:id="@+id/delayed_confirmation" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:src="@drawable/save_button" 
    app:circle_color="@color/blue" 
    app:circle_radius="45dp" 
    app:circle_radius_pressed="40dp" 
    app:circle_padding="5dp" 
    app:circle_border_width="10dp" 
    app:circle_border_color="@color/white"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="Save" 
    android:id="@+id/textView" 
    android:layout_gravity="center" 
    android:textColor="#ffffff" 
    android:layout_marginTop="50dp" /> 
</FrameLayout> 

此佈局的目的是通過一個片段顯示:

public class SaveRunFragment extends Fragment implements DelayedConfirmationView.DelayedConfirmationListener { 
Run1Fragment run1; 
private DelayedConfirmationView mDelayedView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    final View view = inflater.inflate(R.layout.layout_saverun, container, false); 

    mDelayedView = 
      (DelayedConfirmationView) view.findViewById(R.id.delayed_confirmation); 
    mDelayedView.setTotalTimeMs(4 * 1000); 
    mDelayedView.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      System.out.println("START"); 
      mDelayedView.start(); 
      mDelayedView.setListener(SaveRunFragment.this); 
      return; 
     } 
    }); 

    return view; 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
} 

@Override 
public void onTimerFinished(View view) { 
    System.out.println("END"); 
} 

@Override 
public void onTimerSelected(View view) { 
    System.out.println("cancel"); 
} 
} 

我想要實現像按鈕動畫在延遲確認開發者指南上:https://developer.android.com/training/wearables/ui/confirm.html 但是當我點擊按鈕時,onclick()不會觸發該操作。

我測試過它使不同的按鈕來觸發動作,但這一切發生的是,打印顯示但不顯示按鈕周圍的小裕...

有人能告訴我是什麼我做錯了嗎?

編輯

所以我改變了我的片段是:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    final View view = inflater.inflate(R.layout.layout_saverun, container, false); 

    System.out.println("before"); 
    mDelayedView = 
      (DelayedConfirmationView) view.findViewById(R.id.delayed_confirmation); 
    mDelayedView.setTotalTimeMs(4000); 
    mDelayedView.setListener(this); 
    System.out.println("after"); 

    return view; 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
} 

@Override 
public void onTimerFinished(View view) { 
    //delayed confirmation 
    System.out.println("END"); 
} 

@Override 
public void onTimerSelected(View v) { 
    System.out.println("SELECTED"); 
    if (animation == false) { 
     mDelayedView.start(); 
     mDelayedView.setListener(this); 
     animation = true; 
     System.out.println("Start"); 
    } else { 
     ((DelayedConfirmationView) v).setListener(null); 
     animation = false; 
     System.out.println("Cancel"); 
    } 
} 

的打印顯示爲預期,但周圍有圓形按鈕沒有動畫...

編輯

問題是我的源圖像是t o大,它覆蓋了動畫,這就是爲什麼它沒有出現。

回答

1

您已在DelayedConfirmationView本身上設置了OnClickListener;你不應該這樣做,因爲它不會收到觸摸事件。通常通過提供另一個組件(比如一個按鈕)開始倒計數,以便用戶可以點擊該組件來啓動。當用戶點擊DelayedConfirmationView時,無論計數器是否啓動,都會調用「onTimerSelected()」回調函數(在該組件的源代碼中,onTouchEvent()用於接收觸摸事件,並將它們委託給onTimerStart() )所以你onCreateView()應該改成類似:

... 
    mDelayedView = (DelayedConfirmationView) 
        findViewById(R.id.delayed_confirmation); 
    mDelayedView.setListener(this); 
    mDelayedView.setTotalTimeMs(4000); 
    ... 

您可以通過點擊相同DelayedConfirmationView通過調用mDelayedView.start()onTimerSelected()開始倒計時,但是,你必須要管理在解釋該次點擊條款自己的狀態事件作爲開始或取消取決於以前的狀態。

+0

感謝您的澄清!問題是,在用你的信息重做我的代碼之後,動畫仍然不顯示......我希望delayedConfirmationView在點擊時顯示圓形按鈕周圍的動畫,但它只顯示打印並且不顯示動畫... – cdlc

+0

顯示你的完整的修改代碼;你可能仍然失蹤;我根據你的佈局構建了一個示例,它工作得很好。 –

+0

我已經用答案更新了我的問題。顯然,這是我的一個愚蠢的錯誤...感謝您的幫助! – cdlc