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
Nexus One
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie Ihre demo-info in einer anderen Tätigkeit und geben Sie die folgenden Thema.
Wenn Sie mit ActionBarSherlock ändern
parent
zu@style/Theme.Sherlock
.Dadurch erhalten Sie eine transparente Tätigkeit, so werden Sie in der Lage, um zu sehen, die Aktivität unten.
Nun ich vermute, Sie wollen einen durchscheinenden hintergrund zu.
In der xml-layout (transparente Aktivität) hinzufügen:
Den letzten 6 Ziffern definieren Sie die Farbe: 000000 ist schwarz.
Den ersten 2 definieren Sie die Deckkraft: 00 Uhr ist 100% transparent, ff ist 100% deckend. So wählen Sie etwas in zwischen.
InformationsquelleAutor der Antwort Benito Bertoli
Haben Sie sich ShowcaseView? https://github.com/Espiandev/ShowcaseView.
Mit:
InformationsquelleAutor der Antwort Nik
Puls ist mit einem RelativeLayout mit vier Bildansicht und vier TextView.
Der text in dem Screenshot ist alles TextView ' s mit Ihren eigenen benutzerdefinierten schriftart.
In Ihrem Manifest fügen Sie den folgenden, um Ihre Aktivitäten:
android:theme="@style/Theme.Transparent">
Sich In Ihrem äußeren RelativeLayout hinzufügen:
android:background="#aa000000"
Ihrem styles.xml Datei:
Ein Beispiel, wie das Programm die benutzerdefinierte schriftart, die Sie bei uns finden können:
https://github.com/commonsguy/cw-android/tree/master/Fonts/FontSampler/
Layout aus der Hierarchie-Viewer sieht das so aus (das rote Feld ist das RelativeLayout container):
InformationsquelleAutor der Antwort powder366
Dafür benötigen Sie zum erstellen von Hilfe-layout in der Unterseite Ihres Haupt-layout
ex:(Struktur)
InformationsquelleAutor der Antwort Surendar D
InformationsquelleAutor der Antwort user915267
Wickeln Sie Ihre Haupt-layout in einer
RelativeLayout
ist, dann fügen Sie ein zweites layout, so etwas wie:Glaube ich, dass die overlay-layout geht unter die Haupt-layout in der XML-Datei (wenn der Speicher dient). Sie können dann Ihr eigenes layout,
ViewFlipper
was Sie wollen in diesem zweiten layout.InformationsquelleAutor der Antwort Eric
Konnte Sie nur check-out der Android-launcher-code, wie Sie es tun. Ich weiß nicht, es gibt Umsetzung.
Wenn es mir war, ich würde (wenn nur eine einfache überlagerung), so dass Sie nicht die Schraube mit Ihrem layout für Ihre Anwendung, erstellen Sie einfach ein overlay-layout, und befestigen Sie es über die ur-Anwendung das layout, indem Sie es direkt mit Ihren Aktivitäten
WindowManager
. Könnte so einfach sein wie das hinzufügen einesImageView
zu denWindowManager
hören berührt dieImageView
oder haben ein Zeitlimit, um zu entfernenImageView
von IhremWindow
.InformationsquelleAutor der Antwort Jug6ernaut