我正在尝试为我的应用程序创建手指滑动效果。我在许多应用程序中看到,当您从左向右滑动手指时,另一页打开。如何将其添加到我的应用程序中?我想在这个页面中添加一些关于,反馈等的东西。
我该怎么做?我应该使用什么命令?
答案 0 :(得分:1)
视图寻呼机与您需要的完全相同。请查看此处的文档
http://developer.android.com/reference/android/support/v4/view/ViewPager.html
答案 1 :(得分:1)
如果您想创建一个可滑动的屏幕,您应该继续ViewPager
ViewPager
是一个视图(例如EditText
,TextView
),它拥有您创建所需内容所需的一切。
首先,您需要创建一个内部有ViewPager
的xml文件,ViewPager
涵盖的所有区域都可以滑动。例如,您可以构建一个布局,其中一半的屏幕由LinearLayout
填充,另一半由ViewPager
填充,如果您这样做,LinearLayout
内的所有内容都将是静态的,ViewPager中的所有内容都是“可滑动的”。
让我们创建一个名为main.xml
的XML文件,只需一个ViewPager即可填满整个屏幕。
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main_viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
然后,使用TextViews
创建任何您想要的任何布局,让我们将其称为fragment_page1.xml
。创建第二个布局,包含您想要的任何内容,我们可以将其称为fragment_page2.xml
。
现在,你的MainActivity.java:
public class MainActivity extends FragmentActivity { //not Activity, but FragmentActivity
ViewPager viewPager;
PagerAdapter pagerAdapter;
int FIRST_PAGE = 0;
int SECOND_PAGE = 1;
@Override
public void onCreate(Bundle bundle){
super.onCreate(bundle);
setContentView(R.layout.main);
viewPager = (ViewPager) findViewById(R.id.activity_main_viewpager);
pagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager()); //see below
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(0);
}
//this happens when you press the back button
@Override
public void onBackPressed(){
//Check if you are on your first page
if(viewPager.getCurrentItem() == 0){
//If yes, quit app
super.onBackPressed();
}
else{
//if not, go to previous page
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
}
}
private class MyViewPagerAdapter extends FragmentStatePagerAdapter{
public MyViewPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public int getCount(){
return 2; //place the number of pages you want, in this case, only two pages
}
@Override
public Fragment getItem(int position){
//position count starts from 0, so if you have 3 pages, the count will be 0, 1 and 2
if(position == FIRST_PAGE){ // first page
return new FragmentFirstPage(); // show first page
}
else if(position == SECOND_PAGE){ // second page
return new FragmentSecondPage(); // show second page
}
//keep doing the same thing for how many pages you have
else{
return null; //show a null page, generally you will never reach here
}
}
}
}
现在我们需要创建2个类FragmentFirstPage
和FragmentSecondPage
,您需要为每个要显示的页面添加一个类。让我们创建你的FragmentFirstPage.java
//this class you will use to handle button clicks, touch events, anything you have inside your fragment_page1.xml
public class FragmentFirstPage extends Fragment{
View root;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle){
root = inflater.inflate(R.layout.fragment_page1, container, false);
//If you want to retrieve a textview inside fragment_page1.xml for example, you shall do:
//TextView text = (TextView) root.findViewById(R.id.blablabla);
return root;
}
}
现在,这是您的FragmentSecondPage.java
public class FragmentSecondPage extends Fragment{
View root;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle){
root = inflater.inflate(R.layout.fragment_page2, container, false);
return root;
}
}
运行您的应用,您可以浏览2页:)
希望它有所帮助!
= UPDATE =
如果您希望屏幕的一半由LinearLayout填充:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<!-- Here, add any views you want -->
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/activity_main_viewpager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>