Ich versuche, einen halbtransparenten Demobildschirm zu erstellen, der nur gestartet wird, wenn ein Benutzer meine Anwendung zum ersten Mal installiert. Hier ist ein Beispiel aus der Pulse News App:
Nexus Galaxie
Nexus Eins
Anstelle einer Funktion zum Tippen zum Entlassen möchte ich, dass der Benutzer durch einige dieser transparenten Demoseiten wischen kann.
Bei meinem ersten Versuch habe ich ein Beispiel aus der ViewPagerIndicator- Bibliothek geändert . Ich habe in ImageViews in jedem Fragment des View Pagers halbtransparente PNGs verwendet. Ich habe dies dann als 'Demo-Aktivität' in der onCreate-Methode meiner 'Hauptaktivität' gestartet.
Problem: Die 'Hauptaktivität' war nicht im Hintergrund zu sehen - stattdessen war sie nur schwarz. Ich versuchte , die Lösungen hier , aber das hat nicht das Problem zu beheben.
Gibt es einen besseren Ansatz, um so etwas zu schaffen, oder bin ich auf dem richtigen Weg?
Ich hatte auch eine andere verwandte Frage, die davon abhängt, wie dies umgesetzt wird. Ich versuche, Text und Pfeile so zu überlagern, dass sie auf bestimmte UI-Komponenten im Hintergrund zeigen. Wenn Sie ein PNG mit Text und Pfeilen verwenden, wird es wahrscheinlich auf verschiedenen Geräten nicht richtig skaliert. Das heißt, die Pfeile müssen nicht unbedingt auf die richtige UI-Komponente im Hintergrund zeigen. Gibt es eine Möglichkeit, dieses Problem ebenfalls anzugehen?
Vielen 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);
}
}