Eu integrei o novo fragmento Google Maps API v2 em um pager de exibição. Ao rolar a partir do fragmento do mapa, uma visão preta se sobrepõe aos fragmentos adjacentes. Alguém resolveu?
Editar: captura de tela
public static class PagerAdapter extends FragmentPagerAdapter{
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
Fragment pageFragment;
switch (position) {
case 0:
pageFragment = new TabAFragment();
break;
case 1:
pageFragment = new TabBFragment();
break;
case 2:
pageFragment = SupportMapFragment.newInstance();
break;
default:
pageFragment = null;
break;
}
return pageFragment;
}
}
GoogleMap
objeto doViewPager
? Preso nisso por semanas. Se você não entendeu bem a pergunta, então olhe minha pergunta, você encontrará meu post. Por favor, responda.screen record
o problema parece não acontecer.Respostas:
Eu era capaz de parar a superfície preta que está sendo deixado para trás após a transição, colocando uma outra visão com um fundo transparente em cima do
ViewPager
interior de umFrameLayout
:fonte
Tive o mesmo problema com SlidingMenu e ViewPager. Percebi que os botões de controle no fragmento do mapa não são pretos no artefato deixado para trás. Resolvi o problema substituindo o
onCreateView()
método deMapFragment (SupportMapFragment)
fonte
O Google lançou uma correção para isso, mas apenas para 4.1+ (você não precisa baixar uma nova versão do PlayServices, eles usaram um sinalizador do lado do servidor)
Aqui está o que estou usando para contornar o problema - garante que você não desperdice nenhum ciclo de CPU em dispositivos> = 4,1
fonte
FixMapFragment mapFragment = (FixMapFragment) fragmentManager.findFragmentById(R.id.map);
e no arquivo de layout:<fragment android:id="@+id/map" android:name="com.example.fragments.FixMapFragment" ...
. Porém, o mapa ainda pisca, tanto quanto posso dizer (Android 4.0.4).Minha solução alternativa: faça uso da nova interface de instantâneo do GoogleMap e exiba um instantâneo do mapa enquanto rola a página.
Aqui está meu código para definir o instantâneo (está no mesmo fragmento do mapa, chamado FragmentMap.java):
Onde "mapFragment" é meu SupportedMapFragment e "iv" é um ImageView (torne-o match_parent).
E aqui estou controlando o pergaminho:
Meu fragmento com mapa (FragmentMap) está na posição 1, então preciso controlar a rolagem da posição 0 a 1 e da posição 1 a 2 (a primeira cláusula if). "getRegisteredFragment ()" é uma função em meu FragmentPagerAdapter personalizado, no qual tenho um SparseArray (Fragment) chamado "RegisterFragments".
Portanto, sempre que você rola para ou a partir do mapa, sempre vê um instantâneo dele. Isso funciona muito bem para mim.
fonte
Eu tive o mesmo problema de tela preta ao rolar a exibição de lista, estava usando fragmento de mapa com exibição de lista na mesma tela. Resolvi esse problema com o uso da propriedade mágica em xml, onde estou falando de exibição de lista, apenas temos que colocar o android: scrollingCache = "false". meu problema foi corrigido, tente esta propriedade para parar de atrasar e piscar em seus mapas.
fonte
Você não deu muitos detalhes, então há muito que posso sugerir. Eu tive um problema semelhante que a tela oscilou entre as visualizações no pager. Descobriu-se que era o mapView inflando ao alternar entre as páginas pela primeira vez.
Para ser claro, eu tinha 3 páginas em meu pager e meu mapa era a última página.
Para resolver isso, descobri que definir o número de páginas fora da tela como 2 (funcionou no caso acima) para carregar todas as visualizações de uma vez quando meu fragmento começou.
Consulte http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit (int)
fonte
Existe mais uma solução para este problema. Estou mostrando MapFragment dentro de outro fragmento. O MapFragment é adicionado dinamicamente a um FrameLayout.
A solução é usar frameLayout.setVisibility (View.Visible) e frameLayout.setVisibility (View.Gone) em eventos de abertura e fechamento do menu deslizante. É necessário adicionar uma visão extra. E a área preta desapareceu completamente.
fonte
Nenhum dos métodos acima funcionou para mim, nem mesmo outros que encontrei em outro lugar. Finalmente, escolhi uma solução parcial. Eu ouço as mudanças de página por meio do onPageChangeListener do ViewPager, e oculto o mapa quando sua página começa a rolar, e também o mostro novamente quando ele para de rolar. Eu também adicionei uma Visualização em branco para ser exibida durante a rolagem.
fonte
Basta copiar meu fragmento de mapa personalizado para o seu projeto. E se você tiver linhas pretas com ScrollView na parte superior e inferior definidas para o seu android ScrollView: fadingEdge = "none"
}
fonte