0

晕各位,我是按照android开发者的步骤操作的:http://developer.android.com/training/animation/screen-slide.html

如何调用获取 MainJava 中的“btnRight”和“btnLeft”来创建 onClick 函数?我对此一无所知, (???).findViewByID ?

顺便说一句,是否有另一种更好的编码设计来创造这种效果?我想创建 3 个可以滑动或单击更改屏幕的页面,我是否错误地使用了这个 viewpager?它可能会添加一些使用页码技巧的新视图瞬间吗?

请帮帮我,谢谢!!

MainJava.java:

public class MainJava extends FragmentActivity {

private static final int NUM_PAGES = 3;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActionBar actionBar = getActionBar();
    actionBar.hide();

    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
    mPager.setAdapter(mPagerAdapter);
    mPager.setCurrentItem(1); 

}

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return ScreenSlidePageFragment.create(position);
    }

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

}

ScreenSlidePageFragment.java:

public class ScreenSlidePageFragment extends Fragment {

public static final String ARG_PAGE = "page";

private int mPageNumber;

public static ScreenSlidePageFragment create(int pageNumber) {
    ScreenSlidePageFragment fragment = new ScreenSlidePageFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, pageNumber);
    fragment.setArguments(args);
    return fragment;
}

public ScreenSlidePageFragment() {
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mPageNumber = getArguments().getInt(ARG_PAGE);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Inflate the layout containing a title and body text.
    ViewGroup rootView = (ViewGroup) inflater
            .inflate(R.layout.scroll_view_content, container, false);
    //rootView.addView(inflater.inflate(R.layout.scroll_view_content, null));

    View pageLeft = (View) rootView.findViewById(R.id.pageLeft);
    View pageRight = (View) rootView.findViewById(R.id.pageRight);
    View pageMain = (View) rootView.findViewById(R.id.pageMain);
    if (mPageNumber==0){
        pageLeft.setVisibility(View.VISIBLE);
        pageMain.setVisibility(View.GONE);
        pageRight.setVisibility(View.GONE);
    }else if (mPageNumber==1){
        pageLeft.setVisibility(View.GONE);
        pageMain.setVisibility(View.VISIBLE);
        pageRight.setVisibility(View.GONE);
    }else if (mPageNumber==2){
        pageLeft.setVisibility(View.GONE);
        pageMain.setVisibility(View.GONE);
        pageRight.setVisibility(View.VISIBLE);
    }

    return rootView;
}
public int getPageNumber() {
    return mPageNumber;
}

scroll_view_content.xml:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- Dummy content. -->

    <LinearLayout
        android:id="@+id/pageLeft"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            style="?android:textAppearanceMedium"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:lineSpacingMultiplier="1.2"
            android:text="AAA" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/pageRight"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            style="?android:textAppearanceMedium"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:lineSpacingMultiplier="1.2"
            android:text="CCC"/>
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/pageMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#123456"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textB"
            style="?android:textAppearanceMedium"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:lineSpacingMultiplier="1.2"
            android:background="#654321"
            android:text="BBB"/>
        <LinearLayout 
            android:layout_below="@+id/textB"
            android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal">
            <Button 
                android:id="@+id/btnLeft"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#00ffff"
                android:text="A"/>
            <Button 
                android:id="@+id/btnRight"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#ffff00"
                android:text="B"/>
        </LinearLayout>
    </RelativeLayout>
</RelativeLayout>
4

1 回答 1

0

真的很简单。您必须使用视图寻呼机类的 setCurrentItem(int)。该算法将是:

  1. int currPage=1 //指向viewpager中的第二页

  2. 如果单击左按钮 // 按钮
    2a 的侦听器。currPage--
    2b。mPager.setCurrentItem(currPage) //pager 是 viewpager 类的对象

  3. 如果右键单击//按钮
    3a 的侦听器。currPage++
    3b。mPpager.setCurrentItem(currPage)

查看链接以获取信息。

于 2013-11-06T05:04:50.190 回答