Tôi đang cố tạo màn hình demo nửa trong suốt chỉ được khởi chạy khi người dùng cài đặt ứng dụng của tôi lần đầu tiên. Đây là một ví dụ từ ứng dụng Pulse News:
Galaxy Nexus
Nexus One
Thay vì tính năng 'nhấn để loại bỏ', tôi muốn người dùng có thể vuốt qua một vài trang demo trong suốt như vậy.
Trong lần thử đầu tiên, tôi đã sửa đổi một mẫu từ thư viện ViewPagerIndicator . Tôi đã sử dụng các tệp PNG nửa trong suốt trong ImageViews bên trong mỗi mảnh của máy nhắn tin chế độ xem. Sau đó, tôi khởi chạy hoạt động này dưới dạng 'hoạt động demo' trong phương pháp onCreate của 'hoạt động chính' của tôi.
Vấn đề: Không thể nhìn thấy 'hoạt động chính' trong nền - thay vào đó nó chỉ là màu đen. Tôi đã thử các giải pháp ở đây , nhưng điều đó không khắc phục được sự cố.
Có cách nào tốt hơn để tạo ra thứ gì đó như thế này không, hay tôi đang đi đúng hướng?
Tôi cũng có một câu hỏi liên quan khác phụ thuộc vào cách điều này được thực hiện. Tôi đang cố gắng phủ văn bản và mũi tên sao cho chúng trỏ vào các thành phần giao diện người dùng cụ thể trong nền. Bằng cách sử dụng PNG có văn bản và mũi tên, có khả năng nó sẽ không chia tỷ lệ chính xác trên các thiết bị khác nhau. Tức là, các mũi tên có thể không nhất thiết phải trỏ đến thành phần giao diện người dùng chính xác trong nền. Có cách nào để giải quyết vấn đề này không?
Cảm ơn!
Đây là mã của tôi cho lần thử đầu tiên:
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);
}
}