benim durumumda görünümlerde bazı animasyonlar başlatmak istedim, ancak setUserVisibleHint ile bazı sorunlar var ...
benim çözümüm:
Adaptörünüz için 1 / addOnPageChangeListener:
mViewPager.addOnPageChangeListener(this);
2 / OnPageChangeListener uygulamak:
public class PagesFragment extends Fragment implements ViewPager.OnPageChangeListener
3/3 yöntemi geçersiz kılın:
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageSelected(int position)
{
}
@Override
public void onPageScrollStateChanged(int state)
{
}
4 / bu değişkeni sınıfınızda beyan edin ve başlatın
private static int mTabState = 1;
not : bağdaştırıcımda üç parçam var ve setCurrentItem için mTabState kullanıyorum ve hangi parçanın kullanıcıya zamanında gösterildiğini algılayan bağdaştırıcının geçerli konumu ... 5 / in onPageSelected yöntemi bu kodları ekleyin:
if (mTabState == 0 || position == 0)
{
Intent intent = new Intent("animation");
intent.putExtra("current_position", position);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
}
önceki sayfa veya mevcut sayfa sayfa 0 ise (0 konumundaki parça), o zaman bunları yapın
6 / şimdi parça sınıfınızda (adaptörün 0 konumundaki parça), yayın alıcısı oluşturmalı ve onResume yöntemine kaydetmeli ve onu Duraklatma yöntemi:
BroadcastReceiver broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (Objects.equals(intent.getAction(), "animation"))
{
int currentPosition = intent.getIntExtra("current_position", 0);
if (currentPosition == 0)
{
startAnimation();
setViewsVisible();
} else
{
setViewsInvisible();
}
}
}
};
@Override
public void onResume()
{
super.onResume();
LocalBroadcastManager.getInstance(mContext).registerReceiver(broadcastReceiver, new IntentFilter("animation"));
}
@Override
public void onPause()
{
super.onPause();
LocalBroadcastManager.getInstance(mContext).unregisterReceiver(broadcastReceiver);
}
Özet: Parça Çağrı Bağdaştırıcım var, içinde Üç Parça gösteriyor, Adaptörün 0 Konumundaki Parçadaki Görünümlerde bazı Animasyonlar göstermek istiyorum, Bunun için BroadcastReceiver kullanıyorum. Parça Seçildiğinde Animasyon yöntemini başlatıyorum ve Kullanıcıya Görüntülemeleri gösteriyor, Parça Kullanıcıya Gösterilmediğinde Görünmez Görüntülere çalışıyorum ...