2

我需要在 Android 中重现此菜单。-> MenuVideo 示例
我将如何以最好的方式实现这一点!??通常我会使用ViewPager. 但是我将如何显示下一个视图的部分内容,例如视频中的视图 2 和 3。注意您是如何看到其他视图的部分文本的
客户希望用户通过显示一些下一个视图来查看它是可滚动的!

我将如何给出HorizontalScrollView那种弹跳的行为。作为资源,我得到的只是宽背景 png ,包括文本。!
你将如何解决这个问题并从 Android 的视频中制作菜单?!我的意思是,它在ios上是可行的。

4

4 回答 4

1

You will need a horizontal scrollview that is customized to show content from pages at both ends. Also the touch events should be handled properly so it snaps to page ends.

I had a similar requirement in one of my projects and pushed code to GitHub at SnappingScrollView so it could be of help to someone.

Please let me know if it is of some use.

You could alternately use a pager adapter with custom page width but it would not show content from previous page.

于 2013-03-24T11:12:05.853 回答
0

你可以试试Horizontal View Swiping with ViewPager,或者ViewFlipper我在下面添加了两个链接。

ViewPagers 从 PagerAdapters 获取他们的视图,这使您可以完全控制视图的重用和回收。提供了一个称为 FragmentPagerAdapter 的 PagerAdapter 实现,以方便在 ViewPager 中使用 Fragments;

 <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        … />

支持演示:

  public static class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public Fragment getItem(int position) {
            return ArrayListFragment.newInstance(position);
        }
    }

当您在列表中滑动时,FragmentPagerAdapter 将分离每个片段,但将它们保存在内存中,以便在用户向后滑动时可以简单地重新连接它们。

有关更多信息,请尝试此链接

或者你可以去ViewFlipper

public class ViewFlipperActivity extends Activity implements OnGestureListener,
        OnTouchListener {

    private ViewFlipper mViewFlipper;
    private GestureDetector mGestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewflipper_layout);

        mGestureDetector = new GestureDetector(this);
        mViewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);
        mViewFlipper.setOnTouchListener(this);
        mViewFlipper.startFlipping();
    }

    @Override
    public boolean onDown(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
            float distanceY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        // TODO Auto-generated method stub
        if (e2.getX() - e1.getX() > 0) {
            //mViewFlipper.showPrevious();
        } else {
            //mViewFlipper.showNext();
        }
        return true;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        mGestureDetector.onTouchEvent(event);
        return true;
    }

}

ViewFilpper 控件系统自带控件之一,主开关和设置在同屏动画,和自动播放,用法同上,所以这个例子就是你所需要的!!!

于 2013-03-23T10:23:55.770 回答
0

这很容易做到:

yourViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

    @Override
    public Fragment getItem(int position) {
        //return whatever fragment you want;
    }
    @Override
    public float getPageWidth(int position) {
        return 0.8f;
    }
    @Override
    public int getCount() {
        //return the count;
    }
});
于 2013-03-23T10:21:15.103 回答
0

您可以使用一个 Viewpager 将背景拆分为 4 个可绘制资源。viewpager 将根据它们在 arraylist 中的位置加载它们。

您需要一个没有文本的纯图像资产。文本需要是单独的图像,是您个人视图的一部分。很难/几乎不可能预测不同的 android 设备将如何缩放图像,所以你不能只放置不可见的热链接

于 2013-03-13T20:07:52.060 回答