사용자가 내 애플리케이션을 처음 설치할 때만 실행되는 반투명 데모 화면을 만들려고합니다. Pulse News 앱의 예는 다음과 같습니다.
Galaxy Nexus
Nexus One
'탭하여 닫기'기능 대신 사용자가 투명한 데모 페이지 몇 개를 스 와이프 할 수 있기를 바랍니다.
첫 번째 시도로 ViewPagerIndicator 라이브러리 의 샘플을 수정했습니다 . 각 뷰 페이저의 조각 내 ImageViews에서 반투명 PNG를 사용했습니다. 그런 다음 내 '주요 활동'의 onCreate 메소드에서 '데모 활동'으로 이것을 시작했습니다.
문제 : '주요 활동'은 백그라운드에서 볼 수 없습니다. 대신 검은 색이었습니다. 여기 에서 해결책을 시도했지만 문제가 해결되지 않았습니다.
이와 같은 것을 만드는 데 더 나은 접근 방식이 있습니까? 아니면 올바른 길을 가고 있습니까?
또한 이것이 어떻게 구현되는지에 따라 다른 관련 질문이 있습니다. 배경의 특정 UI 구성 요소를 가리 키도록 텍스트와 화살표를 오버레이하려고합니다. 텍스트와 화살표가있는 PNG를 사용하면 다른 장치에서 제대로 확장되지 않을 수 있습니다. 즉, 화살표가 반드시 백그라운드에서 올바른 UI 구성 요소를 가리킬 필요는 없습니다. 이 문제도 해결할 수있는 방법이 있습니까?
감사!
첫 번째 시도에 대한 내 코드는 다음과 같습니다.
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);
}
}