Como você cria uma tela de demonstração transparente para um aplicativo Android?

Estou tentando criar uma tela de demonstração semitransparente que é iniciada apenas quando um usuário instala meu aplicativo pela primeira vez. Veja um exemplo do aplicativo Pulse News:

Galaxy Nexus

Nexus One

Em vez de um recurso "tocar para dispensar", quero que o usuário possa passar por algumas dessas páginas de demonstração transparentes.

Para minha primeira tentativa, modifiquei uma amostra doViewPagerIndicator biblioteca. Eu usei PNGs semitransparentes em ImageViews dentro de cada um dos fragmentos do pager de visualização. Eu então lancei isso como uma 'atividade de demonstração' no método onCreate da minha 'atividade principal'.

Problema: A 'atividade principal' não pôde ser vista em segundo plano - em vez disso, era apenas preta. Eu tentei as soluçõesAqui, mas isso não resolveu o problema.

Existe uma abordagem melhor para criar algo assim, ou estou no caminho certo?

Eu também tive outra questão relacionada que depende de como isso é implementado. Eu estou tentando sobrepor texto e setas de tal forma que eles apontam para determinados componentes da interface do usuário em segundo plano. Ao usar um PNG que tenha o texto e as setas, é provável que não seja dimensionado corretamente em dispositivos diferentes. Ou seja, as setas podem não apontar necessariamente para o componente de interface do usuário correto em segundo plano. Existe uma maneira de resolver esse problema também?

Obrigado!

Aqui está o meu código para a primeira tentativa:

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