Próbuję utworzyć półprzezroczysty ekran demonstracyjny, który jest uruchamiany tylko wtedy, gdy użytkownik po raz pierwszy instaluje moją aplikację. Oto przykład z aplikacji Pulse News:
Galaxy Nexus
Nexus One
Zamiast funkcji „dotknij, aby odrzucić”, chcę, aby użytkownik mógł przeglądać kilka takich przezroczystych stron demonstracyjnych.
Przy pierwszej próbie zmodyfikowałem próbkę z biblioteki ViewPagerIndicator . Użyłem półprzezroczystych plików PNG w ImageViews wewnątrz każdego fragmentu pagera widoku. Następnie uruchomiłem to jako „działanie demonstracyjne” w metodzie onCreate mojej „głównej aktywności”.
Problem: „Główna czynność” nie była widoczna w tle - zamiast tego była po prostu czarna. Wypróbowałem tutaj rozwiązania , ale to nie rozwiązało problemu.
Czy jest lepsze podejście do tworzenia czegoś takiego, czy jestem na dobrej drodze?
Miałem też inne powiązane pytanie, które zależy od tego, jak jest to realizowane. Próbuję nałożyć tekst i strzałki w taki sposób, aby wskazywały na poszczególne elementy interfejsu użytkownika w tle. Używając pliku PNG zawierającego tekst i strzałki, prawdopodobnie nie będzie on poprawnie skalowany na różnych urządzeniach. Oznacza to, że strzałki niekoniecznie muszą wskazywać właściwy składnik interfejsu użytkownika w tle. Czy jest sposób na rozwiązanie również tego problemu?
Dzięki!
Oto mój kod do pierwszej próby:
DemoActivity.java
public class DemoActivity extends FragmentActivity {
DemoFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_activity);
mAdapter = new DemoFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
//mPager.setAlpha(0);
UnderlinePageIndicator indicator = (UnderlinePageIndicator)findViewById(R.id.indicator);
indicator.setViewPager(mPager);
indicator.setFades(false);
mIndicator = indicator;
}
}
DemoFragmentAdapter.java
class DemoFragmentAdapter extends FragmentPagerAdapter {
protected static final int[] CONTENT = new int[] { R.drawable.demo1, R.drawable.demo2, R.drawable.demo3, R.drawable.demo4};
private int mCount = CONTENT.length;
public DemoFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return DemoFragment.newInstance(CONTENT[position % CONTENT.length]);
}
@Override
public int getCount() {
return mCount;
}
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
} }
DemoFragment.java
public final class DemoFragment extends Fragment {
private static final String KEY_CONTENT = "TestFragment:Content";
public static DemoFragment newInstance(int content) {
DemoFragment fragment = new DemoFragment();
fragment.mContent = content;
return fragment;
}
private int mContent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
mContent = savedInstanceState.getInt(KEY_CONTENT);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ImageView image = new ImageView(getActivity());
image.setBackgroundResource(mContent);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);
layout.addView(image);
return layout;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(KEY_CONTENT, mContent);
}
}