Sto cercando di creare una schermata demo semitrasparente che viene avviata solo quando un utente installa per la prima volta la mia applicazione. Ecco un esempio dall'app Pulse News:
Galaxy Nexus
Nexus One
Invece di una funzione "tocca per chiudere", voglio che l'utente sia in grado di scorrere un paio di pagine demo così trasparenti.
Per il mio primo tentativo, ho modificato un campione dalla libreria ViewPagerIndicator . Ho usato PNG semitrasparenti in ImageViews all'interno di ciascuno dei frammenti del cercapersone della vista. L'ho quindi lanciato come "attività demo" nel metodo onCreate della mia "attività principale".
Problema: "l'attività principale" non era visibile sullo sfondo, ma era solo nera. Ho provato le soluzioni qui , ma questo non ha risolto il problema.
C'è un approccio migliore per creare qualcosa di simile o sono sulla strada giusta?
Avevo anche un'altra domanda correlata che dipende da come viene implementata. Sto cercando di sovrapporre testo e frecce in modo che puntino a particolari componenti dell'interfaccia utente in background. Utilizzando un PNG che ha il testo e le frecce, è probabile che non venga ridimensionato correttamente su dispositivi diversi. Ad esempio, le frecce potrebbero non puntare necessariamente al componente dell'interfaccia utente corretto in background. C'è un modo per affrontare anche questo problema?
Grazie!
Ecco il mio codice per il primo tentativo:
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);
}
}