3

Я использую ShowCase View library в своих фрагментах. Я показываю анимацию жестов, которая должна повторяться до тех пор, пока пользователь не нажмет кнопку OK. Но отображается только один раз.Android: ShowCase Посмотреть показать только один раз и повторить анимацию

Также витрина отображается каждый раз, когда Фрагмент создается и не только один раз.

Мой код выглядит следующим образом:

public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     //get display size for slide over screen 
     Display display = getActivity().getWindowManager().getDefaultDisplay(); 
     Point p = new Point(); 
     display.getSize(p); 

     if(!is_tablet()){ 
      // ShowView Tutorial if on smartphone 
      ViewTarget target = new ViewTarget(getView()); 
      ShowcaseView.ConfigOptions co = new ShowcaseView.ConfigOptions(); 
      //can only dismiss by button click 
      co.hideOnClickOutside = false; 
      //show only once 
      co.shotType = ShowcaseView.TYPE_ONE_SHOT; 
      sv = ShowcaseView.insertShowcaseView(target, getActivity(), 
        R.string.showcase_detail_title, R.string.showcase_detail_message,co); 
      // remove circle 
      sv.setShowcaseIndicatorScale(0); 
      // set black background 
      sv.setBackgroundColor(getResources().getColor(R.color.black)); 
      // make background a bit transparent 
      sv.setAlpha(0.9f); 
      // show PullToRefreshGesture 
      sv.animateGesture(0, p.y/2, p.x, p.y/2); 
     } 

Использованный расположение:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<mypackage.PullToRefresh.PullToRefreshListView 
android:id="@id/android:list" 
android:layout_height="match_parent" 
android:layout_width="match_parent" 
android:divider="@android:color/transparent" 
android:dividerHeight="10dp" 
android:layout_margin="10dp"/> 

</LinearLayout> 
+0

Вы можете разместить свой макет? – Umitk

ответ

6

Я решил это так:

  1. Чтобы выполнить только один раз после установки я последовал за this post.
  2. Для повторения анимации я использовал код, указанный в this post.

Теперь ShowcaseView появляется только один раз после установки, и анимация жестов отображается, пока кнопка не нажата.

+0

спасибо вам большое :) – semih

0

Чтобы повторить анимацию со временем:

sv.setRepeatCount(number); 

Для бесконечна:

sv.setRepeatCount(Animation.INFINITE); 
sv.setRepeatMode(Animation.INFINITE); 

и в макете:

android:repeatMode="reverse" 
+0

Я добавил макет к исходному сообщению. Если я попытаюсь добавить строку 'sv.setRepeatCount (Animation.INFINITE),' он говорит 'setRepeatCount() не определен для типа ShowCase View' –

2
/** 
    * Set the ShowcaseView to only ever show once. 
    * 
    * @param shotId a unique identifier (<em>across the app</em>) to store 
    *    whether this ShowcaseView has been shown. 
    */ 
    public Builder singleShot(long shotId) { 
     showcaseView.setSingleShot(shotId); 
     return this; 
    }