summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-08-24 15:41:17 -0400
committerKirill Grouchnikov <kirillg@google.com>2015-11-04 15:31:00 -0500
commit8d3349a080d2a18ee76400fc86dccb1efb7e1650 (patch)
tree1f8c90c9e25290ca0ce0af4d9b5b43baa6e24297
parent0c356e44b32c8f3f0dbc02a0b7b7b4a996346577 (diff)
downloadandroid_development-8d3349a080d2a18ee76400fc86dccb1efb7e1650.tar.gz
android_development-8d3349a080d2a18ee76400fc86dccb1efb7e1650.tar.bz2
android_development-8d3349a080d2a18ee76400fc86dccb1efb7e1650.zip
Add sample activity for ViewPager in Support4Demos
Bug: 23467280 Change-Id: I20453e15e5fb7b235da910d0c290641bd1c3d4c8
-rw-r--r--samples/Support4Demos/AndroidManifest.xml16
-rw-r--r--samples/Support4Demos/res/layout/view_pager_layout.xml (renamed from samples/Support4Demos/res/layout/view_pager_tab.xml)17
-rw-r--r--samples/Support4Demos/res/layout/view_pager_sample.xml57
-rw-r--r--samples/Support4Demos/res/values/strings.xml8
-rw-r--r--samples/Support4Demos/src/com/example/android/supportv4/view/ViewPagerActivity.java140
5 files changed, 93 insertions, 145 deletions
diff --git a/samples/Support4Demos/AndroidManifest.xml b/samples/Support4Demos/AndroidManifest.xml
index f1899ad4e..da5dcaf24 100644
--- a/samples/Support4Demos/AndroidManifest.xml
+++ b/samples/Support4Demos/AndroidManifest.xml
@@ -297,6 +297,14 @@
</intent-filter>
</activity>
+ <activity android:name=".view.ViewPagerActivity"
+ android:label="@string/view_pager_layout_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=".widget.SwipeRefreshLayoutActivity"
android:label="@string/swipe"
android:theme="@style/ThemeHoloLight">
@@ -351,14 +359,6 @@
</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_tab.xml b/samples/Support4Demos/res/layout/view_pager_layout.xml
index 1d0bf31ae..de248dff1 100644
--- a/samples/Support4Demos/res/layout/view_pager_tab.xml
+++ b/samples/Support4Demos/res/layout/view_pager_layout.xml
@@ -14,8 +14,17 @@
limitations under the License.
-->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+<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:textSize="32sp"
- android:gravity="center"/>
+ android:layout_height="match_parent">
+
+ <android.support.v4.view.PagerTitleStrip
+ android:id="@+id/titles"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top" />
+
+</android.support.v4.view.ViewPager>
+
diff --git a/samples/Support4Demos/res/layout/view_pager_sample.xml b/samples/Support4Demos/res/layout/view_pager_sample.xml
deleted file mode 100644
index 1c6d23829..000000000
--- a/samples/Support4Demos/res/layout/view_pager_sample.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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/values/strings.xml b/samples/Support4Demos/res/values/strings.xml
index 1945a1819..1d9f129df 100644
--- a/samples/Support4Demos/res/values/strings.xml
+++ b/samples/Support4Demos/res/values/strings.xml
@@ -156,6 +156,8 @@
<string name="sample_transport_controller_activity">Media/TransportController</string>
+ <string name="view_pager_layout_support">View/View pager</string>
+
<string name="sliding_pane_layout_support">Widget/Sliding pane layout</string>
<string name="sliding_pane_layout_summary">This activity illustrates the use of sliding panes. The content pane may be slid to one side on narrow devices to reveal the left pane used to select content. Sliding panes can be used to fit a UI intended for wider screens in a smaller space. Tapping the Action Bar\'s Up button at the left side of the bar will navigate up in the hierarchy, represented by the left pane. If you rotate the device to landscape mode, on most devices you will see that both panes fit together side by side with no sliding necessary.</string>
@@ -181,10 +183,4 @@
<string name="drawable_compat_no_tint">Not tint</string>
<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
index e50cc610a..51503635e 100644
--- a/samples/Support4Demos/src/com/example/android/supportv4/view/ViewPagerActivity.java
+++ b/samples/Support4Demos/src/com/example/android/supportv4/view/ViewPagerActivity.java
@@ -14,97 +14,97 @@
* limitations under the License.
*/
-
package com.example.android.supportv4.view;
+import com.example.android.supportv4.R;
+
+import android.app.Activity;
+import android.graphics.Color;
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.PagerAdapter;
+import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
-import android.view.LayoutInflater;
+import android.util.Pair;
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;
+import java.util.ArrayList;
-public class ViewPagerActivity extends FragmentActivity {
- private static int[] PAGE_COLORS = { 0xFF700000, 0xFF500020, 0xFF300030, 0xFF200050,
- 0xFF000070};
+public class ViewPagerActivity extends Activity {
+ private ViewPager mPager;
+ private PagerTitleStrip mTitles;
+ private ColorPagerAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.view_pager_sample);
+ setContentView(R.layout.view_pager_layout);
- final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
- viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
- @Override
- public int getCount() {
- return PAGE_COLORS.length;
- }
+ mAdapter = new ColorPagerAdapter();
+ mAdapter.add("Red", Color.RED);
+ mAdapter.add("Green", Color.GREEN);
+ mAdapter.add("Blue", Color.BLUE);
- @Override
- public CharSequence getPageTitle(int position) {
- return "Page " + position;
- }
+ mPager = (ViewPager) findViewById(R.id.pager);
+ mPager.setAdapter(mAdapter);
- @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;
- }
- });
+ mTitles = (PagerTitleStrip) findViewById(R.id.titles);
+ }
- final CheckBox smoothScroll = (CheckBox) findViewById(R.id.view_pager_smooth_scroll);
+ private static class ColorPagerAdapter extends PagerAdapter {
+ private ArrayList<Pair<String, Integer>> mEntries = new ArrayList<>();
- 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 void add(String title, int color) {
+ mEntries.add(new Pair(title, color));
+ }
+
+ @Override
+ public int getCount() {
+ return mEntries.size();
+ }
+
+ @Override
+ public Object instantiateItem(ViewGroup container, int position) {
+ final View view = new View(container.getContext());
+ view.setBackgroundColor(mEntries.get(position).second);
+
+ // Unlike ListView adapters, the ViewPager adapter is responsible
+ // for adding the view to the container.
+ container.addView(view);
+
+ return new ViewHolder(view, position);
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ // The adapter is also responsible for removing the view.
+ container.removeView(((ViewHolder) object).view);
+ }
+
+ @Override
+ public int getItemPosition(Object object) {
+ return ((ViewHolder) object).position;
+ }
- public static class DemoObjectFragment extends Fragment {
- public static final String ARG_INDEX = "index";
+ @Override
+ public boolean isViewFromObject(View view, Object object) {
+ return ((ViewHolder) object).view == view;
+ }
@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;
+ public CharSequence getPageTitle(int position) {
+ return mEntries.get(position).first;
+ }
+
+ private static class ViewHolder {
+ final View view;
+ final int position;
+
+ public ViewHolder(View view, int position) {
+ this.view = view;
+ this.position = position;
+ }
}
}
}