diff --git a/build.gradle b/build.gradle index 481cd38..de979c5 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:1.0.0' + classpath 'com.android.tools.build:gradle:2.0.0-beta6' } } diff --git a/core/build.gradle b/core/build.gradle index 1331efb..7087487 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -5,17 +5,17 @@ repositories { } dependencies { - compile 'com.android.support:recyclerview-v7:21.0.0' + compile 'com.android.support:recyclerview-v7:23.2.0' } android { - compileSdkVersion 21 - buildToolsVersion "21.1.2" + compileSdkVersion 23 + buildToolsVersion '23.0.2' resourcePrefix 'twowayview_' defaultConfig { minSdkVersion 10 - targetSdkVersion 21 + targetSdkVersion 23 } } diff --git a/core/src/main/java/org/lucasr/twowayview/ClickItemTouchListener.java b/core/src/main/java/org/lucasr/twowayview/ClickItemTouchListener.java index 5e57e50..adc3a3a 100644 --- a/core/src/main/java/org/lucasr/twowayview/ClickItemTouchListener.java +++ b/core/src/main/java/org/lucasr/twowayview/ClickItemTouchListener.java @@ -16,7 +16,7 @@ abstract class ClickItemTouchListener implements OnItemTouchListener { private final GestureDetectorCompat mGestureDetector; ClickItemTouchListener(RecyclerView hostView) { - mGestureDetector = new ItemClickGestureDetector(hostView.getContext(), + mGestureDetector = new GestureDetectorCompat(hostView.getContext(), new ItemClickGestureListener(hostView)); } @@ -51,7 +51,7 @@ public void onTouchEvent(RecyclerView recyclerView, MotionEvent event) { abstract boolean performItemClick(RecyclerView parent, View view, int position, long id); abstract boolean performItemLongClick(RecyclerView parent, View view, int position, long id); - private class ItemClickGestureDetector extends GestureDetectorCompat { + /*private class ItemClickGestureDetector extends GestureDetectorCompat { private final ItemClickGestureListener mGestureListener; public ItemClickGestureDetector(Context context, ItemClickGestureListener listener) { @@ -70,7 +70,7 @@ public boolean onTouchEvent(MotionEvent event) { return handled; } - } + }*/ private class ItemClickGestureListener extends SimpleOnGestureListener { private final RecyclerView mHostView; diff --git a/core/src/main/java/org/lucasr/twowayview/ItemClickSupport.java b/core/src/main/java/org/lucasr/twowayview/ItemClickSupport.java index 186f7e6..bab8b1c 100644 --- a/core/src/main/java/org/lucasr/twowayview/ItemClickSupport.java +++ b/core/src/main/java/org/lucasr/twowayview/ItemClickSupport.java @@ -135,5 +135,10 @@ boolean performItemLongClick(RecyclerView parent, View view, int position, long return false; } + + @Override + public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { + + } } } diff --git a/core/src/main/java/org/lucasr/twowayview/ItemSelectionSupport.java b/core/src/main/java/org/lucasr/twowayview/ItemSelectionSupport.java index b4e91ee..9f177d8 100644 --- a/core/src/main/java/org/lucasr/twowayview/ItemSelectionSupport.java +++ b/core/src/main/java/org/lucasr/twowayview/ItemSelectionSupport.java @@ -527,5 +527,10 @@ boolean performItemClick(RecyclerView parent, View view, int position, long id) boolean performItemLongClick(RecyclerView parent, View view, int position, long id) { return true; } + + @Override + public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { + + } } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 20478b1..b6f6e59 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Jan 31 22:57:10 GMT 2015 +#Mon Feb 29 15:18:23 GMT+08:00 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip diff --git a/layouts/build.gradle b/layouts/build.gradle index 5c74392..38c0f16 100644 --- a/layouts/build.gradle +++ b/layouts/build.gradle @@ -5,19 +5,19 @@ repositories { } android { - compileSdkVersion 21 - buildToolsVersion "21.1.2" + compileSdkVersion 23 + buildToolsVersion '23.0.2' resourcePrefix 'twowayview_' defaultConfig { minSdkVersion 10 - targetSdkVersion 21 + targetSdkVersion 23 } } dependencies { compile project(':core') - compile 'com.android.support:recyclerview-v7:21.0.0' + compile 'com.android.support:recyclerview-v7:23.2.0' } apply from: "${rootDir}/gradle/scripts/gradle-mvn-push.gradle" diff --git a/sample/build.gradle b/sample/build.gradle index cf588b5..b79b52c 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -5,19 +5,22 @@ repositories { } android { - compileSdkVersion 21 - buildToolsVersion "21.1.2" - + compileSdkVersion 23 + buildToolsVersion '23.0.2' defaultConfig { minSdkVersion 10 - targetSdkVersion 21 + targetSdkVersion 23 versionCode 1 versionName "1.0" } + productFlavors { + } } dependencies { compile project(':core') compile project(':layouts') - compile 'com.android.support:appcompat-v7:21.0.0' + compile 'com.android.support:design:23.2.0' + compile 'com.android.support:appcompat-v7:23.2.0' + compile 'com.android.support:support-v4:23.2.0' } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index a0d6421..3e29bdc 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -23,7 +23,7 @@ + android:theme="@style/NoActionBarTheme"> diff --git a/sample/src/main/java/org/lucasr/twowayview/sample/MainActivity.java b/sample/src/main/java/org/lucasr/twowayview/sample/MainActivity.java index 442e55b..35a11a1 100644 --- a/sample/src/main/java/org/lucasr/twowayview/sample/MainActivity.java +++ b/sample/src/main/java/org/lucasr/twowayview/sample/MainActivity.java @@ -17,40 +17,63 @@ package org.lucasr.twowayview.sample; import android.os.Bundle; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; -public class MainActivity extends ActionBarActivity { +import java.util.ArrayList; +import java.util.List; + +public class MainActivity extends AppCompatActivity { private final String ARG_SELECTED_LAYOUT_ID = "selectedLayoutId"; private final int DEFAULT_LAYOUT = R.layout.layout_list; private int mSelectedLayoutId; + private TabLayout mTabLayout; + private ViewPager mViewPager; + + private int[] mIconArray = { + R.drawable.ic_list, + R.drawable.ic_grid, + R.drawable.ic_staggered, + R.drawable.ic_spannable + }; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + setContentView(R.layout.tabs_layout); - ActionBar actionBar = getSupportActionBar(); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - actionBar.setDisplayShowTitleEnabled(false); - actionBar.setDisplayShowHomeEnabled(false); + mTabLayout = (TabLayout) findViewById(R.id.tabs); + mViewPager = (ViewPager) findViewById(R.id.pagers); mSelectedLayoutId = DEFAULT_LAYOUT; if (savedInstanceState != null) { mSelectedLayoutId = savedInstanceState.getInt(ARG_SELECTED_LAYOUT_ID); } - addLayoutTab( - actionBar, R.layout.layout_list, R.drawable.ic_list, "list"); - addLayoutTab( - actionBar, R.layout.layout_grid, R.drawable.ic_grid, "grid"); - addLayoutTab( - actionBar, R.layout.layout_staggered_grid, R.drawable.ic_staggered, "staggered"); - addLayoutTab( - actionBar, R.layout.layout_spannable_grid, R.drawable.ic_spannable, "spannable"); + CustomeFragmentAdapter adapter = new CustomeFragmentAdapter(getSupportFragmentManager()); + adapter.addFragment(LayoutFragment.newInstance(R.layout.layout_list), "list"); + adapter.addFragment(LayoutFragment.newInstance(R.layout.layout_grid), "grid"); + adapter.addFragment(LayoutFragment.newInstance(R.layout.layout_staggered_grid), "staggered"); + adapter.addFragment(LayoutFragment.newInstance(R.layout.layout_spannable_grid), "spannable"); + + mViewPager.setAdapter(adapter); + + mTabLayout.setupWithViewPager(mViewPager); + + int count = mTabLayout.getTabCount(); + + for (int i = 0; i < count; i++) { + mTabLayout.getTabAt(i).setText(null); + mTabLayout.getTabAt(i).setIcon(mIconArray[i]); + } } @Override @@ -59,46 +82,33 @@ protected void onSaveInstanceState(Bundle outState) { outState.putInt(ARG_SELECTED_LAYOUT_ID, mSelectedLayoutId); } - private void addLayoutTab(ActionBar actionBar, int layoutId, int iconId, String tag) { - ActionBar.Tab tab = actionBar.newTab() - .setText("") - .setIcon(iconId) - .setTabListener(new TabListener(layoutId, tag)); - actionBar.addTab(tab, layoutId == mSelectedLayoutId); - } + public class CustomeFragmentAdapter extends FragmentPagerAdapter { - public class TabListener implements ActionBar.TabListener { - private LayoutFragment mFragment; - private final int mLayoutId; - private final String mTag; + private final List mFragments = new ArrayList<>(); + private final List mFragmentTitles = new ArrayList<>(); + + public CustomeFragmentAdapter(android.support.v4.app.FragmentManager fm) { + super(fm); + } - public TabListener(int layoutId, String tag) { - mLayoutId = layoutId; - mTag = tag; + public void addFragment(Fragment fragment, String title) { + mFragments.add(fragment); + mFragmentTitles.add(title); } @Override - public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { - mFragment = (LayoutFragment) getSupportFragmentManager().findFragmentByTag(mTag); - if (mFragment == null) { - mFragment = (LayoutFragment) LayoutFragment.newInstance(mLayoutId); - ft.add(R.id.content, mFragment, mTag); - } else { - ft.attach(mFragment); - } - - mSelectedLayoutId = mFragment.getLayoutId(); + public Fragment getItem(int position) { + return mFragments.get(position); } @Override - public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { - if (mFragment != null) { - ft.detach(mFragment); - } + public int getCount() { + return mFragments.size(); } @Override - public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { + public CharSequence getPageTitle(int position) { + return mFragmentTitles.get(position); } } } diff --git a/sample/src/main/res/drawable-hdpi/ic_launcher.png b/sample/src/main/res/drawable-hdpi/ic_launcher.png index 0e79b18..48a558c 100644 Binary files a/sample/src/main/res/drawable-hdpi/ic_launcher.png and b/sample/src/main/res/drawable-hdpi/ic_launcher.png differ diff --git a/sample/src/main/res/drawable-mdpi/ic_launcher.png b/sample/src/main/res/drawable-mdpi/ic_launcher.png index 1183441..a37d10f 100644 Binary files a/sample/src/main/res/drawable-mdpi/ic_launcher.png and b/sample/src/main/res/drawable-mdpi/ic_launcher.png differ diff --git a/sample/src/main/res/drawable-xhdpi/ic_launcher.png b/sample/src/main/res/drawable-xhdpi/ic_launcher.png index c8ab2a1..67f4f66 100644 Binary files a/sample/src/main/res/drawable-xhdpi/ic_launcher.png and b/sample/src/main/res/drawable-xhdpi/ic_launcher.png differ diff --git a/sample/src/main/res/drawable-xxhdpi/ic_launcher.png b/sample/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..fde765c Binary files /dev/null and b/sample/src/main/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/sample/src/main/res/layout/tabs_layout.xml b/sample/src/main/res/layout/tabs_layout.xml new file mode 100644 index 0000000..2e3bde1 --- /dev/null +++ b/sample/src/main/res/layout/tabs_layout.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml index a8b86ae..bc501b3 100644 --- a/sample/src/main/res/values/colors.xml +++ b/sample/src/main/res/values/colors.xml @@ -25,5 +25,5 @@ #EEEEEE #CCCCCC #77CEEE - + #000000 \ No newline at end of file diff --git a/sample/src/main/res/values/styles.xml b/sample/src/main/res/values/styles.xml index be6aea4..c5551f8 100644 --- a/sample/src/main/res/values/styles.xml +++ b/sample/src/main/res/values/styles.xml @@ -19,6 +19,10 @@ + +