java Android Swipe页面(fragement解决方案,较好)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Android Swipe页面(fragement解决方案,较好)相关的知识,希望对你有一定的参考价值。

In this example application we make three tabs called "java", "php" and ".Net" and there are three seperate fragement view for each of these tabs. 

First you need to add the ViewPager into the activity_main.xml file.
 <android.support.v4.view.ViewPager  
   xmlns:android="http://schemas.android.com/apk/res/android"  
   android:id="@+id/pager"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"  
    >  
 </android.support.v4.view.ViewPager> 

Now create three layout files for the fragments.

1. java_layout.xml
 <?xml version="1.0" encoding="utf-8"?>  
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"  
   android:background="#D881DA"  
    >  
   <TextView  
     android:id="@+id/textView1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignParentTop="true"  
     android:layout_centerHorizontal="true"  
     android:layout_marginTop="58dp"  
     android:text="Welcome to java page"  
     android:textAppearance="?android:attr/textAppearanceLarge" />  
 </RelativeLayout>  

2. php_layout.xml
 <?xml version="1.0" encoding="utf-8"?>  
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"   
   android:background="#0B9AE2"  
   >  
   <TextView  
     android:id="@+id/textView1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignParentTop="true"  
     android:layout_centerHorizontal="true"  
     android:layout_marginTop="97dp"  
     android:text="Welcome to php page"  
     android:textAppearance="?android:attr/textAppearanceLarge" />  
 </RelativeLayout>  


3. dotnet_layout.xml
 <?xml version="1.0" encoding="utf-8"?>  
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"  
   android:background="#E2D40B"  
    >  
   <TextView  
     android:id="@+id/textView1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignParentTop="true"  
     android:layout_centerHorizontal="true"  
     android:layout_marginTop="42dp"  
     android:text="Welcome to .Net page"  
     android:textAppearance="?android:attr/textAppearanceLarge" />  
 </RelativeLayout>  


Now we need to inflate each of these layouts using the inflate() method.

1. JavaFragment.java
 package com.tabdemo;  
 import android.os.Bundle;  
 import android.support.v4.app.Fragment;  
 import android.view.LayoutInflater;  
 import android.view.View;  
 import android.view.ViewGroup;  
 public class JavaFragment extends Fragment {  
      @Override  
      public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                Bundle savedInstanceState) {  
           // TODO Auto-generated method stub  
           return inflater.inflate(R.layout.java_layout, container,false);  
      }  
 }  

2.  PhpFragment.java
 package com.tabdemo;  
 import android.os.Bundle;  
 import android.support.v4.app.Fragment;  
 import android.view.LayoutInflater;  
 import android.view.View;  
 import android.view.ViewGroup;  
 public class PhpFragment extends Fragment {  
      @Override  
      public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                Bundle savedInstanceState) {  
           // TODO Auto-generated method stub  
           return inflater.inflate(R.layout.php_layout, container,false);  
      }  
 }  


3. DotNetFragment.java
 package com.tabdemo;  
 import android.os.Bundle;  
 import android.support.v4.app.Fragment;  
 import android.view.LayoutInflater;  
 import android.view.View;  
 import android.view.ViewGroup;  
 public class DotnetFragment extends Fragment {  
      @Override  
      public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                Bundle savedInstanceState) {  
           // TODO Auto-generated method stub  
           return inflater.inflate(R.layout.dotnet_layout, container,false);  
      }  
 }  


Now create an adapter class that extends FragmentPagerAdapter and define override method getItem. The getItem() method will return an object of fragment.

FragmentPageAdapter.java
 package com.tabdemo;  
 import android.support.v4.app.Fragment;  
 import android.support.v4.app.FragmentManager;  
 import android.support.v4.app.FragmentPagerAdapter;  
 public class FragmentPageAdapter extends FragmentPagerAdapter {  
      public FragmentPageAdapter(FragmentManager fm) {  
           super(fm);  
      }  
      @Override  
      public Fragment getItem(int arg0) {  
           // TODO Auto-generated method stub  
           switch (arg0) {  
           case 0:  
                  return new JavaFragment();  
           case 1:  
                  return new PhpFragment();  
           case 2:  
                 return new DotnetFragment();  
           default:  
                break;  
           }  
           return null;  
      }  
      @Override  
      public int getCount() {  
           // TODO Auto-generated method stub  
           return 3;  
      }  
 }  

MainActivity.java
 package com.tabdemo;  
 import android.app.ActionBar;  
 import android.app.ActionBar.Tab;  
 import android.app.FragmentTransaction;  
 import android.os.Bundle;  
 import android.support.v4.app.FragmentActivity;  
 import android.support.v4.view.ViewPager;  
 public class MainActivity extends FragmentActivity implements ActionBar.TabListener{  
      ActionBar actionbar;  
      ViewPager viewpager;  
      FragmentPageAdapter ft;  
      @Override  
      protected void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.activity_main);  
           viewpager = (ViewPager) findViewById(R.id.pager);  
           ft = new FragmentPageAdapter(getSupportFragmentManager());  
           actionbar = getActionBar();  
           viewpager.setAdapter(ft);  
           actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  
           actionbar.addTab(actionbar.newTab().setText("Java").setTabListener(this));  
           actionbar.addTab(actionbar.newTab().setText("Php").setTabListener(this));  
           actionbar.addTab(actionbar.newTab().setText(".Net").setTabListener(this));  
           viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {  
                @Override  
                public void onPageSelected(int arg0) {  
                actionbar.setSelectedNavigationItem(arg0);  
                }  
                @Override  
                public void onPageScrolled(int arg0, float arg1, int arg2) {  
                     // TODO Auto-generated method stub  
                }  
                @Override  
                public void onPageScrollStateChanged(int arg0) {  
                     // TODO Auto-generated method stub  
                }  
           });  
      }  
      @Override  
      public void onTabReselected(Tab tab, FragmentTransaction ft) {  
           // TODO Auto-generated method stub  
      }  
      @Override  
      public void onTabSelected(Tab tab, FragmentTransaction ft) {  
           viewpager.setCurrentItem(tab.getPosition());  
      }  
      @Override  
      public void onTabUnselected(Tab tab, FragmentTransaction ft) {  
           // TODO Auto-generated method stub  
      }  
 } 

以上是关于java Android Swipe页面(fragement解决方案,较好)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Android Swipe 转换为 Android TouchAction?

Python+Appium自动化之swipe()滑动页面

解决Android下元素滑动问题

java-client 升级后没法使用swipe方法,使用TouchAction进行封装

java-client 升级后没法使用swipe方法,使用TouchAction进行封装

Android - Grow Heap (Frag Case) - Byte Allocation.. 不加载任何位图