Test app for ViewPager.

Bug: 25113163
Change-Id: Idd49f9e74831875a55ea19c5fa5e9adc732dd091
diff --git a/samples/Support4Demos/AndroidManifest.xml b/samples/Support4Demos/AndroidManifest.xml
index d3f0b85..9d4f69d 100644
--- a/samples/Support4Demos/AndroidManifest.xml
+++ b/samples/Support4Demos/AndroidManifest.xml
@@ -359,6 +359,14 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".view.ViewPagerActivity"
+                  android:label="@string/view_pager_support">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.example.android.supportv4.SUPPORT4_SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
         <activity android:name=".graphics.RoundedBitmapDrawableActivity"
             android:label="Graphics/RoundedBitmapDrawable">
             <intent-filter>
diff --git a/samples/Support4Demos/res/layout/view_pager_sample.xml b/samples/Support4Demos/res/layout/view_pager_sample.xml
new file mode 100644
index 0000000..1c6d238
--- /dev/null
+++ b/samples/Support4Demos/res/layout/view_pager_sample.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <android.support.v4.view.ViewPager
+        android:id="@+id/view_pager"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1">
+        <android.support.v4.view.PagerTabStrip
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top"/>
+    </android.support.v4.view.ViewPager>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:gravity="end">
+        <CheckBox
+            android:id="@+id/view_pager_smooth_scroll"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:checked="true"
+            android:text="@string/view_pager_smooth_scroll"/>
+        <Button
+            android:id="@+id/view_pager_switch_tabs_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="12dip"
+            android:text="@string/view_pager_switch_tabs"/>
+        <Button
+            android:id="@+id/view_pager_double_switch_tabs_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="12dip"
+            android:text="@string/view_pager_double_switch_tabs"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/samples/Support4Demos/res/layout/view_pager_tab.xml b/samples/Support4Demos/res/layout/view_pager_tab.xml
new file mode 100644
index 0000000..1d0bf31
--- /dev/null
+++ b/samples/Support4Demos/res/layout/view_pager_tab.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:textSize="32sp"
+    android:gravity="center"/>
diff --git a/samples/Support4Demos/res/values/strings.xml b/samples/Support4Demos/res/values/strings.xml
index 2157be1..8917c66 100644
--- a/samples/Support4Demos/res/values/strings.xml
+++ b/samples/Support4Demos/res/values/strings.xml
@@ -195,4 +195,9 @@
     <string name="drawable_compat_color_tint">Color tint</string>
     <string name="drawable_compat_color_list_tint">Color state list</string>
 
+    <!-- ViewPager -->
+    <string name="view_pager_support">View/View pager</string>
+    <string name="view_pager_smooth_scroll">Smooth scroll</string>
+    <string name="view_pager_switch_tabs">Switch tabs</string>
+    <string name="view_pager_double_switch_tabs">Double-switch tabs</string>
 </resources>
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/view/ViewPagerActivity.java b/samples/Support4Demos/src/com/example/android/supportv4/view/ViewPagerActivity.java
new file mode 100644
index 0000000..e50cc61
--- /dev/null
+++ b/samples/Support4Demos/src/com/example/android/supportv4/view/ViewPagerActivity.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.example.android.supportv4.view;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentStatePagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.TextView;
+import android.widget.Toast;
+import com.example.android.supportv4.R;
+
+import java.lang.Override;
+import java.lang.Runnable;
+
+public class ViewPagerActivity extends FragmentActivity {
+    private static int[] PAGE_COLORS = { 0xFF700000, 0xFF500020, 0xFF300030, 0xFF200050,
+            0xFF000070};
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.view_pager_sample);
+
+        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
+        viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
+            @Override
+            public int getCount() {
+                return PAGE_COLORS.length;
+            }
+
+            @Override
+            public CharSequence getPageTitle(int position) {
+                return "Page " + position;
+            }
+
+            @Override
+            public Fragment getItem(int position) {
+                Fragment fragment = new DemoObjectFragment();
+                Bundle args = new Bundle();
+                args.putInt(DemoObjectFragment.ARG_INDEX, position);
+                fragment.setArguments(args);
+                return fragment;
+            }
+        });
+
+        final CheckBox smoothScroll = (CheckBox) findViewById(R.id.view_pager_smooth_scroll);
+
+        Button switchTabsButton = (Button) findViewById(R.id.view_pager_switch_tabs_button);
+        switchTabsButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                viewPager.setCurrentItem(2, smoothScroll.isChecked());
+                Toast.makeText(view.getContext(), "Current item = " + viewPager.getCurrentItem(),
+                        Toast.LENGTH_SHORT).show();
+            }
+        });
+
+        Button doubleSwitchTabsButton =
+                (Button) findViewById(R.id.view_pager_double_switch_tabs_button);
+        doubleSwitchTabsButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                viewPager.setCurrentItem(0, smoothScroll.isChecked());
+                viewPager.setCurrentItem(2, smoothScroll.isChecked());
+                Toast.makeText(view.getContext(), "Current item = " + viewPager.getCurrentItem(),
+                        Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    public static class DemoObjectFragment extends Fragment {
+        public static final String ARG_INDEX = "index";
+
+        @Override
+        public View onCreateView(LayoutInflater inflater,
+                ViewGroup container, Bundle savedInstanceState) {
+            // The last two arguments ensure LayoutParams are inflated
+            // properly.
+            View rootView = inflater.inflate(R.layout.view_pager_tab, container, false);
+            Bundle args = getArguments();
+            int position = args.getInt(ARG_INDEX);
+            rootView.setBackgroundColor(PAGE_COLORS[position]);
+            ((TextView) rootView).setText(Integer.toString(position));
+            return rootView;
+        }
+    }
+}