Wie erstellst du einen transparenten Demo-Bildschirm für eine Android App?

Ich bin versuchen, um eine semi-transparente demo-Bildschirm wird nur gestartet, wenn ein Benutzer das erste mal installiert meine Anwendung. Hier ein Beispiel aus der Pulse News-app:

Galaxy Nexus

Wie erstellst du einen transparenten Demo-Bildschirm für eine Android App?

Nexus One

Wie erstellst du einen transparenten Demo-Bildschirm für eine Android App?

Statt von einem 'tap-zu-schließen" - Funktion, ich möchte die Benutzer in der Lage sein zu ziehen, durch ein paar solche transparente demo-Seiten.

Für meinen ersten Versuch, ich veränderte ein Beispiel aus der ViewPagerIndicator Bibliothek. Ich verwendete halb-transparente PNGs in ImageViews in jedem der view pager-Fragmente. Ich habe dann begonnen so eine 'demo-Bewegung", in der onCreate-Methode von meinen "main activity".

Problem: Die "main activity" konnte nicht gesehen werden in den hintergrund - stattdessen war es einfach nur schwarz. Ich habe versucht, die Lösungen hieraber das hat das problem nicht behoben.

Gibt es einen besseren Ansatz für die Schaffung von so etwas wie dieses, oder bin ich auf dem richtigen Weg?

Hatte ich auch eine damit zusammenhängende Frage, die davon abhängt, wie dies umgesetzt wird. Ich versuche, overlay text und Pfeile, so dass Sie zeigen bei bestimmten UI-Komponenten in den hintergrund. Durch die Verwendung einer PNG, text und Pfeile, es ist wahrscheinlich, dass es nicht korrekt skaliert auf verschiedenen Geräten. I. e., die Pfeile können nicht unbedingt auf die richtigen UI-Komponente in den hintergrund. Gibt es eine Möglichkeit, dieses problem anzugehen?

Dank!

Hier ist mein code für den ersten Versuch:

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

InformationsquelleAutor der Frage Gautam | 2012-08-17

Schreibe einen Kommentar