Jak utworzyć przezroczysty ekran demonstracyjny dla aplikacji na Androida?

Próbuję stworzyć półprzezroczysty ekran demonstracyjny, który jest uruchamiany tylko wtedy, gdy użytkownik po raz pierwszy zainstaluje moją aplikację. Oto przykład z aplikacji Pulse News:

Galaxy Nexus

Nexus One

Zamiast funkcji „dotknij, aby odrzucić” chcę, aby użytkownik mógł przesuwać po kilku takich przejrzystych stronach demonstracyjnych.

Przy pierwszej próbie zmodyfikowałem próbkę zViewPagerIndicator biblioteka. Użyłem półprzezroczystych 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łównej aktywności” nie można było zobaczyć w tle - zamiast tego była tylko czarna. Spróbowałem rozwiązańtutaj, ale to nie rozwiązało problemu.

Czy istnieje 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 to jest realizowane. Próbuję nałożyć tekst i strzałki tak, aby wskazywały na poszczególne komponenty interfejsu użytkownika w tle. Używając PNG z tekstem i strzałkami, prawdopodobnie nie będzie skalować poprawnie na różnych urządzeniach. To znaczy, strzałki mogą nie koniecznie wskazywać na poprawny komponent interfejsu użytkownika w tle. Czy istnieje sposób na rozwiązanie tego problemu?

Dzięki!

Oto mój kod za pierwszą próbę:

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);
    }
}

questionAnswers(8)

yourAnswerToTheQuestion