Skip to content

Commit

Permalink
2.6.0 (#62)
Browse files Browse the repository at this point in the history
* Add Tmall indicator sample

* Fix issue #58

* Fix issue #60

* Fix a hidden exception(About ViewHolder)

* Use ViewPager2 instead ViewPager in MainActivity.

* Add English README
  • Loading branch information
zhpanvip authored Dec 8, 2019
1 parent 6e6e768 commit f534957
Show file tree
Hide file tree
Showing 23 changed files with 717 additions and 385 deletions.
286 changes: 144 additions & 142 deletions README.md

Large diffs are not rendered by default.

442 changes: 442 additions & 0 deletions README_CN.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,5 @@ dependencies {
implementation project(path: ':ideahttp')
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}
Binary file added app/release/app-release.apk
Binary file not shown.
File renamed without changes.
8 changes: 3 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,21 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activity.Main2Activity"></activity>
<activity
android:name=".activity.WelcomeActivity"
android:theme="@style/FullScreenTheme" >
android:theme="@style/FullScreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name=".activity.PhotoViewActivity"
android:theme="@style/FullScreenTheme" />
<activity android:name=".activity.MainActivity">

</activity>
<activity android:name=".activity.MainActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import android.content.Intent
import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager.widget.ViewPager

import androidx.viewpager2.widget.ViewPager2

import com.example.zhpan.circleviewpager.R
import com.example.zhpan.circleviewpager.adapter.AdapterFragmentPager
Expand All @@ -24,22 +23,14 @@ class MainActivity : AppCompatActivity() {
}

private fun initData() {
val mAdapter = AdapterFragmentPager(supportFragmentManager)
vp_fragment?.adapter = mAdapter
vp_fragment?.disableTouchScroll(true)
vp_fragment?.offscreenPageLimit = 3
vp_fragment?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

}

vp_fragment.adapter = AdapterFragmentPager(this)
vp_fragment.offscreenPageLimit = 3
vp_fragment.isUserInputEnabled=false
vp_fragment.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
rg_tab?.check(getCheckedId(position))
}

override fun onPageScrollStateChanged(state: Int) {

}
})
}

Expand All @@ -55,17 +46,12 @@ class MainActivity : AppCompatActivity() {
}

private fun setListener() {
rg_tab?.setOnCheckedChangeListener { group, checkedId ->
if (checkedId == R.id.rb_home) {
vp_fragment?.setCurrentItem(AdapterFragmentPager.PAGE_HOME, false)

} else if (checkedId == R.id.rb_find) {
vp_fragment?.setCurrentItem(AdapterFragmentPager.PAGE_FIND, false)

} else if (checkedId == R.id.rb_add) {
vp_fragment?.setCurrentItem(AdapterFragmentPager.PAGE_INDICATOR, false)
} else if (checkedId == R.id.rb_others) {
vp_fragment?.setCurrentItem(AdapterFragmentPager.PAGE_OTHERS, false)
rg_tab?.setOnCheckedChangeListener { _, checkedId ->
when (checkedId) {
R.id.rb_home -> vp_fragment.setCurrentItem(AdapterFragmentPager.PAGE_HOME, false)
R.id.rb_find -> vp_fragment.setCurrentItem(AdapterFragmentPager.PAGE_FIND, false)
R.id.rb_add -> vp_fragment.setCurrentItem(AdapterFragmentPager.PAGE_INDICATOR, false)
R.id.rb_others -> vp_fragment.setCurrentItem(AdapterFragmentPager.PAGE_OTHERS, false)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
package com.example.zhpan.circleviewpager.adapter


import android.util.SparseArray
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import com.example.zhpan.circleviewpager.fragment.*
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter

class AdapterFragmentPager(fm: FragmentManager) : FragmentPagerAdapter(fm) {
import com.example.zhpan.circleviewpager.fragment.BaseFragment
import com.example.zhpan.circleviewpager.fragment.HomeFragment
import com.example.zhpan.circleviewpager.fragment.IndicatorFragment
import com.example.zhpan.circleviewpager.fragment.OthersFragment
import com.example.zhpan.circleviewpager.fragment.PageFragment

private val fragmentList: SparseArray<BaseFragment>?
import java.util.ArrayList

private val fragments: SparseArray<BaseFragment>
get() {
val fragmentList = SparseArray<BaseFragment>()
fragmentList.put(PAGE_HOME, HomeFragment.getInstance())
fragmentList.put(PAGE_FIND, PageFragment.getInstance())
fragmentList.put(PAGE_INDICATOR, IndicatorFragment.getInstance())
fragmentList.put(PAGE_OTHERS, OthersFragment.getInstance())
return fragmentList
}
/**
* <pre>
* Created by zhangpan on 2019-12-05.
* Description:
</pre> *
*/
class AdapterFragmentPager(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {

init {
fragmentList = fragments
}
private val fragments: SparseArray<BaseFragment> = SparseArray()

override fun instantiateItem(container: ViewGroup, position: Int): Any {
val fragment = super.instantiateItem(container, position) as Fragment
fragmentList?.put(position, fragment as BaseFragment)
return fragment
init {
fragments.put(PAGE_HOME, HomeFragment.getInstance())
fragments.put(PAGE_FIND, PageFragment.getInstance())
fragments.put(PAGE_INDICATOR, IndicatorFragment.getInstance())
fragments.put(PAGE_OTHERS, OthersFragment.getInstance())
}

override fun getItem(position: Int): Fragment {
return fragmentList!!.get(position)
override fun createFragment(position: Int): Fragment {
return fragments[position]
}

override fun getCount(): Int {
return fragmentList?.size() ?: 0
override fun getItemCount(): Int {
return fragments.size()
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,24 @@ private void initRadioGroup() {
case R.id.rb_round_rect:
setupRoundRectIndicator();
break;
case R.id.rb_tmall:
setupTmallIndicator();
break;
}
});
radioButton.performClick();
}

private void setupTmallIndicator() {
mViewPager
.setIndicatorStyle(IndicatorStyle.DASH)
.setIndicatorGap(0)
.setIndicatorColor(getColor(R.color.white_alpha_75), getColor(R.color.white))
.setIndicatorWidth(BannerUtils.dp2px(12), BannerUtils.dp2px(12))
.setIndicatorHeight(BannerUtils.dp2px(1.5f))
.create(getMDrawableList());
}

private void setupRoundRectIndicator() {
mViewPager.setIndicatorStyle(IndicatorStyle.ROUND_RECT)
.setIndicatorGravity(IndicatorGravity.CENTER)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,26 @@
package com.example.zhpan.circleviewpager.viewholder;

import android.animation.ObjectAnimator;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.example.zhpan.circleviewpager.R;
import com.example.zhpan.circleviewpager.bean.CustomBean;
import com.zhpan.bannerview.holder.ViewHolder;

public class CustomPageViewHolder implements ViewHolder<CustomBean> {
private ImageView mImageView;
private ImageView mImageStart;
private OnSubViewClickListener mOnSubViewClickListener;

@Override
public View createView(ViewGroup viewGroup, Context context, int position) {
View view = LayoutInflater.from(context).inflate(R.layout.item_custom_view, viewGroup, false);
mImageView = view.findViewById(R.id.banner_image);
mImageStart = view.findViewById(R.id.iv_logo);
return view;
public int getLayoutId() {
return R.layout.item_custom_view;
}

@Override
public void onBind(Context context, CustomBean data, int position, int size) {
public void onBind(View itemView, CustomBean data, int position, int size) {
ImageView mImageView = itemView.findViewById(R.id.banner_image);
ImageView mImageStart = itemView.findViewById(R.id.iv_logo);

mImageView.setImageResource(data.getImageRes());
mImageStart.setOnClickListener(view -> {
if (null != mOnSubViewClickListener)
Expand All @@ -34,7 +29,6 @@ public void onBind(Context context, CustomBean data, int position, int size) {
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(mImageStart, "alpha", 0, 1);
alphaAnimator.setDuration(1500);
alphaAnimator.start();

}

public void setOnSubViewClickListener(OnSubViewClickListener subViewClickListener) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.example.zhpan.circleviewpager.viewholder;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.zhpan.circleviewpager.R;
import com.example.zhpan.circleviewpager.view.CornerImageView;
Expand All @@ -16,23 +13,23 @@
* </pre>
*/
public class ImageResourceViewHolder implements ViewHolder<Integer> {
private CornerImageView mImageView;

private int roundCorner;

public ImageResourceViewHolder(int roundCorner) {
this.roundCorner = roundCorner;
}

@Override
public View createView(ViewGroup viewGroup, Context context, int position) {
View view = LayoutInflater.from(context).inflate(R.layout.item_slide_mode, viewGroup, false);
mImageView = view.findViewById(R.id.banner_image);
return view;
public int getLayoutId() {
return R.layout.item_slide_mode;
}

@Override
public void onBind(Context context, Integer data, int position, int size) {
mImageView.setImageResource(data);
mImageView.setRoundCorner(roundCorner);
public void onBind(View itemView, Integer data, int position, int size) {
CornerImageView imageView = itemView.findViewById(R.id.banner_image);
imageView.setImageResource(data);
imageView.setRoundCorner(roundCorner);
}

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
package com.example.zhpan.circleviewpager.viewholder;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.zhpan.circleviewpager.R;
import com.example.zhpan.circleviewpager.imageloader.ImageLoaderManager;
Expand All @@ -22,22 +17,19 @@
* </pre>
*/
public class NetViewHolder implements ViewHolder<BannerData> {
private CornerImageView mImageView;
// private TextView mTextView;

@Override
public View createView(ViewGroup viewGroup, Context context, int position) {
View view = LayoutInflater.from(context).inflate(R.layout.item_net, viewGroup, false);
mImageView = view.findViewById(R.id.banner_image);
// mTextView = view.findViewById(R.id.tv_describe);
mImageView.setRoundCorner(BannerUtils.dp2px(5));
return view;
public int getLayoutId() {
return R.layout.item_net;
}

@Override
public void onBind(Context context, BannerData data, int position, int size) {
ImageLoaderOptions options = new ImageLoaderOptions.Builder().into(mImageView).load(data.getImagePath()).placeHolder(R.drawable.placeholder).build();
public void onBind(View itemView, BannerData data, int position, int size) {
CornerImageView imageView = itemView.findViewById(R.id.banner_image);
imageView.setRoundCorner(BannerUtils.dp2px(5));
ImageLoaderOptions options = new ImageLoaderOptions.Builder()
.into(imageView).load(data.getImagePath())
.placeHolder(R.drawable.placeholder).build();
ImageLoaderManager.getInstance().loadImage(options);
// mTextView.setText(data.getTitle());
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.example.zhpan.circleviewpager.viewholder;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.example.zhpan.circleviewpager.R;
Expand All @@ -16,20 +13,16 @@
*/

public class PhotoViewHolder implements ViewHolder<Integer> {
private PhotoView mImageView;

@Override
public View createView(ViewGroup viewGroup, Context context, int position) {
// 返回页面布局文件
View view = LayoutInflater.from(context).inflate(R.layout.item_photo_view, viewGroup, false);
mImageView = view.findViewById(R.id.banner_image);
return view;
public int getLayoutId() {
return R.layout.item_photo_view;
}

@Override
public void onBind(final Context context, Integer data, final int position, final int size) {
// 数据绑定
mImageView.setImageResource(data);
mImageView.setOnClickListener(v -> Toast.makeText(context, position + " 页面数" + size, Toast.LENGTH_SHORT).show());
public void onBind(View itemView, Integer data, int position, int size) {
PhotoView imageView = itemView.findViewById(R.id.banner_image);
imageView.setImageResource(data);
imageView.setOnClickListener(v -> Toast.makeText(itemView.getContext(), position + " 页面数" + size, Toast.LENGTH_SHORT).show());
}
}

This file was deleted.

Loading

0 comments on commit f534957

Please sign in to comment.