0
現在我有一個查看多個片段的尋呼機。停止查看尋呼機從開始下一個尋呼機前看到
其實我在一個片段中替換視圖,但是我有這個問題。
我在每個單個視圖中顯示一個gif圖像。所以當我在頁面1中時,圖像2中的gif開始它的動畫。
我需要保持gif不動畫,直到它在屏幕上可見爲止。
我使用setUserVisibleHint,但它沒有添加任何改進或解決方案。
有沒有解決這個問題的建議?
在此先感謝。
這裏是我的代碼片段
public class WalkThroughFragment extends Fragment implements View.OnClickListener {
public CacheClass cacheClass;
public View view;
private int pageNumber = 1;
private TextView doneWalkThrough;
private LinearLayout linearLayout;
private GifImageView gifImageView, gifImageView2, gifImageView3, gifImageView4, gifImageView5;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.item_walkthrough, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
this.view = view;
Bundle bundle = this.getArguments();
if (bundle != null) {
if (bundle.getInt("pageNumber") != 0) {
pageNumber = bundle.getInt("pageNumber");
}
}
cacheClass = new CacheClass(getActivity());
gifImageView = (GifImageView) view.findViewById(R.id.imageViewGif);
gifImageView.setFreezesAnimation(true);
gifImageView.setVisibility(View.GONE);
gifImageView2 = (GifImageView) view.findViewById(R.id.imageViewGif);
gifImageView2.setFreezesAnimation(true);
gifImageView2.setVisibility(View.GONE);
gifImageView3 = (GifImageView) view.findViewById(R.id.imageViewGif);
gifImageView3.setFreezesAnimation(true);
gifImageView3.setVisibility(View.GONE);
gifImageView4 = (GifImageView) view.findViewById(R.id.imageViewGif);
gifImageView4.setFreezesAnimation(true);
gifImageView4.setVisibility(View.GONE);
gifImageView5 = (GifImageView) view.findViewById(R.id.imageViewGif);
gifImageView5.setFreezesAnimation(true);
gifImageView5.setVisibility(View.GONE);
linearLayout = (LinearLayout) view.findViewById(R.id.walkThroughLayOut);
doneWalkThrough = (TextView) view.findViewById(R.id.doneWalkThrough);
doneWalkThrough.setOnClickListener(this);
if (this.getUserVisibleHint()) {
setUserVisibleHint(true);
} else {
linearLayout.setBackgroundColor(Color.BLUE);
}
}
@Override
public void onDestroy() {
super.onDestroy();
gifImageView.destroyDrawingCache();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser) {
if (getView() != null) {
switch (pageNumber) {
case 1:
gifImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
gifImageView.setBackgroundResource(R.drawable.first_gif);
gifImageView.setVisibility(View.VISIBLE);
linearLayout.setBackgroundColor(Color.GREEN);
break;
case 2:
gifImageView2.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
gifImageView2.setBackgroundResource(R.drawable.second_gif);
gifImageView2.setVisibility(View.VISIBLE);
linearLayout.setBackgroundColor(Color.BLUE);
break;
case 3:
gifImageView3.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
gifImageView3.setBackgroundResource(R.drawable.third_gif);
gifImageView3.setVisibility(View.VISIBLE);
linearLayout.setBackgroundColor(getResources().getColor(R.color.light_blue));
break;
case 4:
gifImageView4.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
gifImageView4.setBackgroundResource(R.drawable.forth_gif);
gifImageView4.setVisibility(View.VISIBLE);
linearLayout.setBackgroundColor(Color.YELLOW);
break;
case 5:
gifImageView5 = (GifImageView) view.findViewById(R.id.imageViewGif);
gifImageView5.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
gifImageView5.setVisibility(View.VISIBLE);
gifImageView5.setBackgroundResource(R.drawable.fifth_gif);
try {
GifDrawable gifFromResource = new GifDrawable(getResources(), R.drawable.fifth_gif);
int duration = gifFromResource.getDuration();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doneWalkThrough.setVisibility(View.VISIBLE);
}
}, duration);
gifFromResource.stop();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}
}
@Override
public void onClick(View v) {
((WalkThroughActivity) getActivity()).switchIntent();
}
}
嘗試加入'super.setUserVisibleHint(isVisibleToUser);'在** ** setUserVisibleHint方法 –
這是viewpager正常行爲的最頂端,它就像渲染列表視圖項目。你已經完成了工作,應該像這裏說的那樣工作:http://stackoverflow.com/a/12523627/1239911 – Amt87
要在ViewPager中獲得片段可見性,請使用http://stackoverflow.com/a/12523627/919150 – AndreyICE