我想模拟视图寻呼机的动画,用于更改背景颜色,但想法是让视图(或更多)始终保持在背景前面(即使在切换时)。 任何建议都会很高兴听到。
编辑:这是我想要实现的一个例子: http://www.youtube.com/watch?v=mB7GmfMxLvY
答案 0 :(得分:2)
有几种方法可以做到这一点。您可以创建具有不同背景的视图,然后使用动画来获得所需的效果。但是,由于您提到了ViewPager,如果这是您需要的...更简单的解决方案是使用相对布局并在视图寻呼机顶部覆盖其他视图。
看看这里:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/viewpager"
android:layout_alignParentRight="false"/>
<!-- other views go here -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher"/>
</RelativeLayout>
然后使用不同的背景颜色为视图寻呼机分配视图。 (注意:在短时间内编写代码来解释解决方案)
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
colors = new ArrayList<Integer>();
colors.add(Color.RED);
colors.add(Color.BLACK);
colors.add(Color.BLUE);
colors.add(Color.GREEN);
colors.add(Color.YELLOW);
mViewPager = (ViewPager)findViewById(R.id.viewpager);
mPageAdapter = new MyPageAdapter();
mViewPager.setAdapter(mPageAdapter);
mPageAdapter.notifyDataSetChanged();
}
private MyPageAdapter mPageAdapter;
private ViewPager mViewPager;
private List<Integer> colors;
class MyPageAdapter extends PagerAdapter {
@Override
public int getCount() {
return colors.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
RelativeLayout view = new RelativeLayout(getApplicationContext());
view.setBackgroundColor(colors.get(position));
((ViewPager) mViewPager).addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object view) {
((ViewPager) mViewPager).removeView((RelativeLayout) view);
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view == ((RelativeLayout) o);
}
}
}
因此,您可以在不编写任何额外代码的情况下实现视图寻呼机的所有属性(手势,幻灯片效果等)。