0

我想模拟视图寻呼机的动画,以更改背景颜色,但想法是让视图(或更多)始终保持在背景前面(即使在切换时)。任何建议都会很高兴听到。

编辑:这是我想要实现的一个例子: http ://www.youtube.com/watch?v=mB7GmfMxLvY

4

1 回答 1

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);
        }

    }

}

所以这样你就可以实现视图分页器的所有属性(手势、幻灯片效果等),而无需编写任何额外的代码)。

于 2013-10-07T17:16:00.660 回答