Skip to content

Commit

Permalink
Code optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
youlookwhat committed Dec 30, 2021
1 parent 36c5d5f commit f944ad8
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 49 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ android {
applicationId "me.jingbin.bybannerview"
minSdkVersion 14
targetSdkVersion 29
versionCode 1
versionName "1.0"
versionCode 2
versionName "1.4.0"
multiDexEnabled true //Add this
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
Expand Down
21 changes: 5 additions & 16 deletions app/src/main/java/me/jingbin/bybannerview/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ public ByBannerViewHolder createViewHolder() {
@Override
public void onBannerClick(int position) {
MainActivity.this.startActivity(new Intent(banner.getContext(), RecyclerViewBannerActivity.class));
Toast.makeText(getApplicationContext(), list.get(position).getTitle(), Toast.LENGTH_LONG).show();
}
});
banner.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
Expand Down Expand Up @@ -259,15 +258,6 @@ public static List<BannerItemBean> getList(int size) {
return list;
}

@Override
protected void onPause() {
super.onPause();
//结束轮播
banner.stopAutoPlay();
banner2.stopAutoPlay();
banner3.stopAutoPlay();
}

@Override
protected void onResume() {
super.onResume();
Expand All @@ -278,21 +268,20 @@ protected void onResume() {
}

@Override
protected void onStop() {
super.onStop();
protected void onPause() {
super.onPause();
//结束轮播
banner.stopAutoPlay();
banner2.stopAutoPlay();
banner3.stopAutoPlay();
cancelAllTimers();
}

@Override
protected void onDestroy() {
super.onDestroy();
banner.setAutoPlay(false).releaseBanner();
banner2.setAutoPlay(false).releaseBanner();
banner3.setAutoPlay(false).releaseBanner();
banner.releaseBanner();
banner2.releaseBanner();
banner3.releaseBanner();
cancelAllTimers();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ private void setBanner2View(final List<BannerItemBean> list) {
banner2
// .setAutoPlay(true)
// .setBannerStyle(BannerConfig.NOT_INDICATOR)
.setBannerAnimation(ScaleRightTransformer.class)
// .setBannerAnimation(ScaleRightTransformer.class)
.setOffscreenPageLimit(list.size())
.setDelayTime(3000)
.setPages(list, new HolderCreator<ByBannerViewHolder>() {
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/res/layout/header_banner.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
app:indicator_margin="15dp"
app:indicator_padding="6dp"
app:indicator_width="6dp"
app:is_back_loop="false"
app:page_left_margin="30dp"
app:page_right_margin="30dp" />
app:is_back_loop="false" />
<!-- app:page_left_margin="30dp"-->
<!-- app:page_right_margin="30dp"-->
6 changes: 3 additions & 3 deletions bybanner/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ apply plugin: 'com.github.dcendents.android-maven'
group='com.github.youlookwhat'

android {
compileSdkVersion 28
compileSdkVersion 29

defaultConfig {
minSdkVersion 14
targetSdkVersion 28
targetSdkVersion 29
versionCode 1
versionName "1.0"

Expand All @@ -29,5 +29,5 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
}
66 changes: 42 additions & 24 deletions bybanner/src/main/java/me/jingbin/banner/ByBannerView.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

/**
* @author jingbin
* link: https://github.com/youlookwhat/SBannerView
* link: https://github.com/youlookwhat/ByBannerView
*/
public class ByBannerView extends FrameLayout implements ViewPager.OnPageChangeListener {

Expand Down Expand Up @@ -72,15 +72,15 @@ public class ByBannerView extends FrameLayout implements ViewPager.OnPageChangeL

private int count = 0;
private int gravity = -1;
private List mDatas;
private int widthPixels;
private int lastPosition;
private int currentItem;
private int mPageLeftMargin;
private int mPageRightMargin;
private List mDatas;
private List<ImageView> indicatorImages;
private HolderCreator<ByBannerViewHolder> creator;
private final WeakHandler handler = new WeakHandler();
private WeakHandler handler = null;

private Context context;
private LinearLayout indicator;
Expand Down Expand Up @@ -115,12 +115,12 @@ public ByBannerView(Context context, AttributeSet attrs, int defStyle) {
private void initView(Context context, AttributeSet attrs) {
handleTypedArray(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.layout_bybanner, this, true);
viewPager = (BannerViewPager) view.findViewById(R.id.bannerViewPager);
viewPager = view.findViewById(R.id.bannerViewPager);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
params.leftMargin = mPageLeftMargin;
params.rightMargin = mPageRightMargin;
viewPager.setLayoutParams(params);
indicator = (LinearLayout) view.findViewById(R.id.circleIndicator);
indicator = view.findViewById(R.id.circleIndicator);
RelativeLayout.LayoutParams indicatorParam = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
indicatorParam.bottomMargin = mIndicatorMargin;
indicatorParam.leftMargin = mIndicatorMarginLeft - mIndicatorPadding;
Expand Down Expand Up @@ -271,10 +271,14 @@ public ByBannerView setPages(List<?> datas, HolderCreator<ByBannerViewHolder> cr
}

public void update(List<?> imageUrls) {
this.mDatas.clear();
this.indicatorImages.clear();
this.mDatas.addAll(imageUrls);
this.count = this.mDatas.size();
if (mDatas != null) {
mDatas.clear();
mDatas.addAll(imageUrls);
count = mDatas.size();
}
if (indicatorImages != null) {
indicatorImages.clear();
}
start();
}

Expand Down Expand Up @@ -342,13 +346,6 @@ private void createIndicator() {
for (int i = 0; i < count; i++) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ScaleType.CENTER_CROP);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mIndicatorWidth, mIndicatorHeight);
params.leftMargin = mIndicatorPadding;
params.rightMargin = mIndicatorPadding;
LinearLayout.LayoutParams customParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
customParams.leftMargin = mIndicatorPadding;
customParams.rightMargin = mIndicatorPadding;
if (i == 0) {
if (mIndicatorSelectedDrawable != null) {
imageView.setImageDrawable(mIndicatorSelectedDrawable);
Expand All @@ -364,8 +361,14 @@ private void createIndicator() {
}
indicatorImages.add(imageView);
if (bannerStyle == BannerConfig.CIRCLE_INDICATOR) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mIndicatorWidth, mIndicatorHeight);
params.leftMargin = mIndicatorPadding;
params.rightMargin = mIndicatorPadding;
indicator.addView(imageView, params);
} else if (bannerStyle == BannerConfig.CUSTOM_INDICATOR) {
LinearLayout.LayoutParams customParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
customParams.leftMargin = mIndicatorPadding;
customParams.rightMargin = mIndicatorPadding;
indicator.addView(imageView, customParams);
}
}
Expand Down Expand Up @@ -399,23 +402,23 @@ private void setData() {
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(currentItem);
viewPager.setOffscreenPageLimit(count);
if (isScroll && count > 1) {
viewPager.setScrollable(true);
} else {
viewPager.setScrollable(false);
}
viewPager.setScrollable(isScroll && count > 1);
startAutoPlay();
}

public void startAutoPlay() {
if (isAutoPlay) {
if (isAutoPlay && count > 1) {
// 设置了自动轮播且数据大于1
if (handler == null) {
handler = new WeakHandler();
}
handler.removeCallbacks(task);
handler.postDelayed(task, delayTime);
}
}

public void stopAutoPlay() {
if (isAutoPlay) {
if (isAutoPlay && handler != null) {
handler.removeCallbacks(task);
}
}
Expand All @@ -427,6 +430,9 @@ public void stopAutoPlay() {
@Override
public void run() {
if (count > 1) {
if (handler == null) {
handler = new WeakHandler();
}
if (isBackLoop) {
// 下一个
if (isSlipRight) {
Expand Down Expand Up @@ -529,6 +535,9 @@ private class BannerPagerAdapter extends PagerAdapter {

@Override
public int getCount() {
if (mDatas == null) {
return 0;
}
if (mDatas.size() == 1) {
return mDatas.size();
} else if (mDatas.size() < 1) {
Expand Down Expand Up @@ -707,6 +716,15 @@ public void setOnPageChangeListener(ViewPager.OnPageChangeListener onPageChangeL
}

public void releaseBanner() {
handler.removeCallbacksAndMessages(null);
if (handler != null) {
handler.removeCallbacksAndMessages(null);
handler = null;
}
if (mDatas != null) {
mDatas.clear();
}
if (indicatorImages != null) {
indicatorImages.clear();
}
}
}

0 comments on commit f944ad8

Please sign in to comment.