Yalnızca bir kullanıcı uygulamamı ilk kez yüklediğinde başlatılan yarı şeffaf bir demo ekranı oluşturmaya çalışıyorum. İşte Pulse News uygulamasından bir örnek:
Galaxy Nexus
Nexus One
'Atlamak için dokun' özelliği yerine, kullanıcının bu tür şeffaf demo sayfalarından birkaçını kaydırabilmesini istiyorum.
İlk denemem için ViewPagerIndicator kitaplığından bir örneği değiştirdim . Görüntü sayfalayıcısının her bir parçasının içinde ImageViews'ta yarı saydam PNG'ler kullandım. Daha sonra bunu 'ana etkinliğimin' onCreate yönteminde bir 'demo etkinliği' olarak başlattım.
Problem: 'Ana aktivite' arka planda görülemiyordu - bunun yerine sadece siyahtı. Buradaki çözümleri denedim ama bu sorunu çözmedi.
Böyle bir şey yaratmak için daha iyi bir yaklaşım var mı yoksa doğru yolda mıyım?
Bunun nasıl uygulandığına bağlı başka bir ilgili sorum da vardı. Metin ve okları arka planda belirli UI bileşenlerini gösterecek şekilde yerleştirmeye çalışıyorum. Metin ve oklar içeren bir PNG kullanarak, farklı cihazlarda doğru şekilde ölçeklenmeyebilir. Yani, oklar arka planda mutlaka doğru UI bileşenini göstermeyebilir. Bu sorunu da çözmenin bir yolu var mı?
Teşekkürler!
İşte ilk deneme için kodum:
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);
}
}