¿Cómo se crea una pantalla de demostración transparente para una aplicación de Android?

Estoy intentando crear una pantalla de demostración semitransparente que se inicia solo cuando un usuario instala mi aplicación por primera vez. Aquí hay un ejemplo de la aplicación Pulse News:

Galaxy Nexus

Nexus One

En lugar de una función de "pulsar para cerrar", quiero que el usuario pueda deslizar un par de esas páginas de demostración transparentes.

Para mi primer intento, modifiqué una muestra de laViewPagerIndicator biblioteca. Usé PNG semitransparentes en ImageViews dentro de cada uno de los fragmentos del paginador de la vista. Luego lancé esto como una 'actividad de demostración' en el método onCreate de mi 'actividad principal'.

Problema: la 'actividad principal' no se podía ver en el fondo, sino que era solo negra. Probé las soluciones.aquí, pero eso no solucionó el problema.

¿Hay un mejor enfoque para crear algo como esto, o estoy en el camino correcto?

También tuve otra pregunta relacionada que depende de cómo se implementa esto. Estoy tratando de superponer texto y flechas para que apunten a determinados componentes de la interfaz de usuario en segundo plano. Al usar un PNG que tiene el texto y las flechas, es probable que no se escale correctamente en diferentes dispositivos. Es decir, las flechas pueden no apuntar necesariamente al componente UI correcto en el fondo. ¿Hay alguna manera de abordar este problema también?

¡Gracias!

Aquí está mi código para el primer intento:

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

Respuestas a la pregunta(8)

Su respuesta a la pregunta