Explorar o código

Merge remote-tracking branch 'origin/master'

zhpanvip hai 1 ano
pai
achega
2e077a5d85

+ 1 - 1
README.md

@@ -88,7 +88,7 @@ It's also support to custom indicator style,just need extends BaseIndicatorView
  **If you have any question regard to BannerViewPager, please scan the QR code and join the QQ group to communicate.** <a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=yHQU7OuoIazbu8vXGt1wC37RsPzhnR61&jump_from=webapi"><img border="0" 
                                                                                                                          src="https://pub.idqqimg.com/wpa/images/group.png" alt="QQ群60902509" title="QQ群60902509">
  
-| QQ群 | 微信 |
+| QQ群 | 入群加微信 |
 |--|--|
 | ![QQ Group](https://cdn.jsdelivr.net/gh/zhpanvip/images/project/group/qq_group.png) |  ![WeChat](https://github.com/zhpanvip/images/blob/master/project/group/wechat.png) |
 

+ 73 - 65
app/src/main/java/com/example/zhpan/banner/activity/MainActivity.kt

@@ -3,6 +3,7 @@ package com.example.zhpan.banner.activity
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
+import android.util.Log
 import androidx.appcompat.app.ActionBarDrawerToggle
 import androidx.appcompat.app.AppCompatActivity
 import androidx.viewpager2.widget.ViewPager2
@@ -12,27 +13,34 @@ import com.example.zhpan.banner.databinding.ActivityMainBinding
 import com.google.android.material.navigation.NavigationView
 
 class MainActivity : AppCompatActivity() {
-    private lateinit var binding:ActivityMainBinding
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        binding = ActivityMainBinding.inflate(layoutInflater)
-        setContentView(binding.root)
-        initView()
-        initData()
-        setListener()
-    }
+  private lateinit var binding: ActivityMainBinding
+  override fun onCreate(savedInstanceState: Bundle?) {
+    super.onCreate(savedInstanceState)
+    binding = ActivityMainBinding.inflate(layoutInflater)
+    setContentView(binding.root)
+    initView()
+    initData()
+    setListener()
+  }
+
+  override fun onResume() {
+    super.onResume()
+    val width = window.decorView.width
+    val height = window.decorView.height
+    Log.d("Main", "width = $width,height = $height")
+  }
 
   private fun initView() {
-      binding.toolbar.apply {
+    binding.toolbar.apply {
       title = getString(R.string.app_name)
       setSupportActionBar(binding.toolbar)
     }
-      binding.drawerLayout.apply {
+    binding.drawerLayout.apply {
       val toggle = ActionBarDrawerToggle(
-          this@MainActivity,
-          this,
-          binding.toolbar, R.string.navigation_drawer_open,
-          R.string.navigation_drawer_close
+        this@MainActivity,
+        this,
+        binding.toolbar, R.string.navigation_drawer_open,
+        R.string.navigation_drawer_close
       )
       addDrawerListener(toggle)
       toggle.syncState()
@@ -42,65 +50,65 @@ class MainActivity : AppCompatActivity() {
     }
   }
 
-    private fun initData() {
-        with(binding.vpFragment) {
-            adapter = AdapterFragmentPager(this@MainActivity)
-            registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
-                override fun onPageSelected(position: Int) {
-                    super.onPageSelected(position)
-                    binding.rgTab.check(getCheckedId(position))
-                }
-            })
+  private fun initData() {
+    with(binding.vpFragment) {
+      adapter = AdapterFragmentPager(this@MainActivity)
+      registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
+        override fun onPageSelected(position: Int) {
+          super.onPageSelected(position)
+          binding.rgTab.check(getCheckedId(position))
         }
+      })
     }
+  }
 
-    private fun getCheckedId(position: Int): Int {
-        return when (position) {
-            0 -> R.id.rb_home
-            1 -> R.id.rb_add
-            2 -> R.id.rb_find
-            3 -> R.id.rb_others
-            else -> R.id.rb_home
-        }
+  private fun getCheckedId(position: Int): Int {
+    return when (position) {
+      0 -> R.id.rb_home
+      1 -> R.id.rb_add
+      2 -> R.id.rb_find
+      3 -> R.id.rb_others
+      else -> R.id.rb_home
     }
+  }
 
-    private fun setListener() {
-        binding.rgTab.setOnCheckedChangeListener { _, checkedId ->
-            when (checkedId) {
-                R.id.rb_home -> binding.vpFragment.setCurrentItem(AdapterFragmentPager.PAGE_HOME, true)
-                R.id.rb_add -> binding.vpFragment.setCurrentItem(AdapterFragmentPager.PAGE_FIND, true)
-                R.id.rb_find -> binding.vpFragment.setCurrentItem(
-                    AdapterFragmentPager.PAGE_INDICATOR,
-                    true
-                )
-                R.id.rb_others -> binding.vpFragment.setCurrentItem(AdapterFragmentPager.PAGE_OTHERS, true)
-            }
-        }
+  private fun setListener() {
+    binding.rgTab.setOnCheckedChangeListener { _, checkedId ->
+      when (checkedId) {
+        R.id.rb_home -> binding.vpFragment.setCurrentItem(AdapterFragmentPager.PAGE_HOME, true)
+        R.id.rb_add -> binding.vpFragment.setCurrentItem(AdapterFragmentPager.PAGE_FIND, true)
+        R.id.rb_find -> binding.vpFragment.setCurrentItem(
+          AdapterFragmentPager.PAGE_INDICATOR,
+          true
+        )
+        R.id.rb_others -> binding.vpFragment.setCurrentItem(AdapterFragmentPager.PAGE_OTHERS, true)
+      }
     }
+  }
 
-    companion object {
-        fun start(context: Context) {
-            context.startActivity(Intent(context, MainActivity::class.java))
-        }
+  companion object {
+    fun start(context: Context) {
+      context.startActivity(Intent(context, MainActivity::class.java))
     }
+  }
 
-    private val onDrawerNavigationItemSelectedListener =
-        NavigationView.OnNavigationItemSelectedListener { item ->
-            when (item.itemId) {
-                R.id.nav_banner -> {
-                    WebViewActivity.start(
-                        this@MainActivity, getString(R.string.app_name),
-                        "https://github.com/zhpanvip/BannerViewPager"
-                    )
-                }
+  private val onDrawerNavigationItemSelectedListener =
+    NavigationView.OnNavigationItemSelectedListener { item ->
+      when (item.itemId) {
+        R.id.nav_banner -> {
+          WebViewActivity.start(
+            this@MainActivity, getString(R.string.app_name),
+            "https://github.com/zhpanvip/BannerViewPager"
+          )
+        }
 
-                R.id.nav_indicator -> {
-                    WebViewActivity.start(
-                        this@MainActivity, getString(R.string.indicator_name),
-                        "https://github.com/zhpanvip/ViewPagerIndicator"
-                    )
-                }
-            }
-            true
+        R.id.nav_indicator -> {
+          WebViewActivity.start(
+            this@MainActivity, getString(R.string.indicator_name),
+            "https://github.com/zhpanvip/ViewPagerIndicator"
+          )
         }
+      }
+      true
+    }
 }

+ 101 - 104
app/src/main/java/com/example/zhpan/banner/activity/WelcomeActivity.kt

@@ -21,120 +21,117 @@ import java.util.*
 
 class WelcomeActivity : BaseDataActivity() {
 
-    private lateinit var mViewPager: BannerViewPager<CustomBean>
-    private lateinit var binding: ActivityWelcomeBinding
+  private lateinit var mViewPager: BannerViewPager<CustomBean>
+  private lateinit var binding: ActivityWelcomeBinding
 
-    private val des = arrayOf("在这里\n你可以听到周围人的心声", "在这里\nTA会在下一秒遇见你", "在这里\n不再错过可以改变你一生的人")
+  private val des = arrayOf("在这里\n你可以听到周围人的心声", "在这里\nTA会在下一秒遇见你", "在这里\n不再错过可以改变你一生的人")
 
-    private val transforms = intArrayOf(
-        TransformerStyle.NONE,
-        TransformerStyle.ACCORDION,
-        TransformerStyle.DEPTH,
-        TransformerStyle.DEPTH_SCALE,
-        TransformerStyle.ROTATE,
-        TransformerStyle.SCALE_IN,
-        TransformerStyle.ROTATE_UP
-    )
+  private val transforms = intArrayOf(
+    TransformerStyle.NONE,
+    TransformerStyle.ACCORDION,
+    TransformerStyle.DEPTH,
+    TransformerStyle.DEPTH_SCALE,
+    TransformerStyle.ROTATE,
+    TransformerStyle.SCALE_IN,
+    TransformerStyle.ROTATE_UP
+  )
 
-    private val data: List<CustomBean>
-        get() {
-            val list = ArrayList<CustomBean>()
-            for (i in mDrawableList.indices) {
-                val customBean = CustomBean()
-                customBean.imageRes = mDrawableList[i]
-                customBean.imageDescription = des[i]
-                list.add(customBean)
-            }
-            return list
-        }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        binding = ActivityWelcomeBinding.inflate(layoutInflater)
-        setContentView(binding.root)
-        setupViewPager()
-        updateUI(0)
-    }
-
-    private fun setupViewPager() {
-        mViewPager = findViewById(R.id.viewpager)
-        mViewPager.apply {
-            setCanLoop(false)
-            setPageTransformer(
-                PageTransformerFactory.createPageTransformer(transforms[Random().nextInt(7)])
-            )
-            setIndicatorMargin(
-                0, 0, 0, resources.getDimension(R.dimen.dp_100)
-                    .toInt()
-            )
-            setIndicatorSliderGap(
-                resources.getDimension(R.dimen.dp_10)
-                    .toInt()
-            )
-            setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
-            setIndicatorSliderRadius(
-                resources.getDimension(R.dimen.dp_3)
-                    .toInt(), resources.getDimension(R.dimen.dp_4_5)
-                    .toInt()
-            )
-            registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
-                override fun onPageSelected(position: Int) {
-                    BannerUtils.log("position:$position")
-                    updateUI(position)
-                }
-            })
-            adapter = SimpleAdapter().apply {
-                mOnSubViewClickListener = object : SimpleAdapter.OnSubViewClickListener {
-                    override fun onViewClick(
-                        view: View?,
-                        position: Int
-                    ) {
-                        ToastUtils.showShort("Logo Clicked,position:$position")
-                    }
-                }
-            }
-            setIndicatorSliderColor(
-                ContextCompat.getColor(this@WelcomeActivity, R.color.white),
-                ContextCompat.getColor(this@WelcomeActivity, R.color.white_alpha_75)
-            )
-        }
-            .create(data)
+  private val data: List<CustomBean>
+    get() {
+      val list = ArrayList<CustomBean>()
+      for (i in mDrawableList.indices) {
+        val customBean = CustomBean()
+        customBean.imageRes = mDrawableList[i]
+        customBean.imageDescription = des[i]
+        list.add(customBean)
+      }
+      return list
     }
 
-    fun onClick(view: View) {
-        MainActivity.start(this)
-        finish()
-    }
+  override fun onCreate(savedInstanceState: Bundle?) {
+    super.onCreate(savedInstanceState)
+    binding = ActivityWelcomeBinding.inflate(layoutInflater)
+    setContentView(binding.root)
+    setupViewPager()
+    updateUI(0)
+  }
 
-    private fun updateUI(position: Int) {
-        binding.tvDescribe.text = des[position]
-        val translationAnim = ObjectAnimator.ofFloat(binding.tvDescribe, "translationX", -120f, 0f)
-        translationAnim.apply {
-            duration = ANIMATION_DURATION.toLong()
-            interpolator = DecelerateInterpolator()
+  private fun setupViewPager() {
+    mViewPager = findViewById(R.id.viewpager)
+    mViewPager.apply {
+      setCanLoop(false)
+      setPageTransformer(
+        PageTransformerFactory.createPageTransformer(transforms[Random().nextInt(7)])
+      )
+      setIndicatorMargin(0, 0, 0, resources.getDimensionPixelOffset(R.dimen.dp_100))
+      setIndicatorSliderGap(
+        resources.getDimension(R.dimen.dp_10)
+          .toInt()
+      )
+      setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
+      setIndicatorSliderRadius(
+        resources.getDimension(R.dimen.dp_3)
+          .toInt(), resources.getDimension(R.dimen.dp_4_5)
+          .toInt()
+      )
+      registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
+        override fun onPageSelected(position: Int) {
+          BannerUtils.log("position:$position")
+          updateUI(position)
         }
-        val alphaAnimator = ObjectAnimator.ofFloat(binding.tvDescribe, "alpha", 0f, 1f)
-        alphaAnimator.apply {
-            duration = ANIMATION_DURATION.toLong()
+      })
+      adapter = SimpleAdapter().apply {
+        mOnSubViewClickListener = object : SimpleAdapter.OnSubViewClickListener {
+          override fun onViewClick(
+            view: View?,
+            position: Int
+          ) {
+            ToastUtils.showShort("Logo Clicked,position:$position")
+          }
         }
-        val animatorSet = AnimatorSet()
-        animatorSet.playTogether(translationAnim, alphaAnimator)
-        animatorSet.start()
+      }
+      setIndicatorSliderColor(
+        ContextCompat.getColor(this@WelcomeActivity, R.color.white),
+        ContextCompat.getColor(this@WelcomeActivity, R.color.white_alpha_75)
+      )
+    }
+      .create(data)
+  }
 
-        if (position == mViewPager.data.size - 1 && binding.btnStart.visibility == View.GONE) {
-            binding.btnStart.visibility = View.VISIBLE
-            ObjectAnimator
-                .ofFloat(binding.btnStart, "alpha", 0f, 1f)
-                .setDuration(ANIMATION_DURATION.toLong())
-                .start()
-        } else {
-            binding.btnStart.visibility = View.GONE
-        }
+  fun onClick(view: View) {
+    MainActivity.start(this)
+    finish()
+  }
+
+  private fun updateUI(position: Int) {
+    binding.tvDescribe.text = des[position]
+    val translationAnim = ObjectAnimator.ofFloat(binding.tvDescribe, "translationX", -120f, 0f)
+    translationAnim.apply {
+      duration = ANIMATION_DURATION.toLong()
+      interpolator = DecelerateInterpolator()
     }
+    val alphaAnimator = ObjectAnimator.ofFloat(binding.tvDescribe, "alpha", 0f, 1f)
+    alphaAnimator.apply {
+      duration = ANIMATION_DURATION.toLong()
+    }
+    val animatorSet = AnimatorSet()
+    animatorSet.playTogether(translationAnim, alphaAnimator)
+    animatorSet.start()
 
-    companion object {
-        private const val ANIMATION_DURATION = 1300
-        private const val MIN_SCALE = 0.9f
-        private const val MIN_ALPHA = 0.7f
+    if (position == mViewPager.data.size - 1 && binding.btnStart.visibility == View.GONE) {
+      binding.btnStart.visibility = View.VISIBLE
+      ObjectAnimator
+        .ofFloat(binding.btnStart, "alpha", 0f, 1f)
+        .setDuration(ANIMATION_DURATION.toLong())
+        .start()
+    } else {
+      binding.btnStart.visibility = View.GONE
     }
+  }
+
+  companion object {
+    private const val ANIMATION_DURATION = 1300
+    private const val MIN_SCALE = 0.9f
+    private const val MIN_ALPHA = 0.7f
+  }
 }

+ 1 - 1
app/src/main/java/com/example/zhpan/banner/fragment/HomeFragment.java

@@ -102,7 +102,7 @@ public class HomeFragment extends BaseFragment {
         recyclerView.addHeaderView(getHeaderView(), true);
         recyclerView.addItemDecoration(new DividerItemDecoration(getMContext(),
             DividerItemDecoration.VERTICAL));
-        articleAdapter = new ArticleAdapter(getActivity(), new ArrayList<>());
+        articleAdapter = new ArticleAdapter(requireActivity(), new ArrayList<>());
         recyclerView.setAdapter(articleAdapter);
     }
 

+ 16 - 14
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -33,6 +33,7 @@ import android.widget.RelativeLayout;
 import androidx.annotation.ColorInt;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.Px;
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
@@ -562,7 +563,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    *
    * @param radius round radius
    */
-  public BannerViewPager<T> setRoundCorner(int radius) {
+  public BannerViewPager<T> setRoundCorner(@Px int radius) {
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
       mBannerManager.getBannerOptions().setRoundRectRadius(radius);
     } else {
@@ -579,7 +580,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @param bottomLeftRadius bottom left round radius
    * @param bottomRightRadius bottom right round radius
    */
-  public BannerViewPager<T> setRoundCorner(int topLeftRadius, int topRightRadius,
+  public BannerViewPager<T> setRoundCorner(@Px int topLeftRadius, @Px int topRightRadius,
       int bottomLeftRadius,
       int bottomRightRadius) {
     mRadiusRectF = new RectF();
@@ -664,7 +665,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    *
    * @param pageMargin page margin
    */
-  public BannerViewPager<T> setPageMargin(int pageMargin) {
+  public BannerViewPager<T> setPageMargin(@Px int pageMargin) {
     mBannerManager.setPageMargin(pageMargin);
     return this;
   }
@@ -725,7 +726,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    *
    * @param radius 指示器圆点半径
    */
-  public BannerViewPager<T> setIndicatorSliderRadius(int radius) {
+  public BannerViewPager<T> setIndicatorSliderRadius(@Px int radius) {
     setIndicatorSliderRadius(radius, radius);
     return this;
   }
@@ -736,12 +737,12 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @param normalRadius unchecked circle radius
    * @param checkedRadius checked circle radius
    */
-  public BannerViewPager<T> setIndicatorSliderRadius(int normalRadius, int checkedRadius) {
+  public BannerViewPager<T> setIndicatorSliderRadius(@Px int normalRadius, @Px int checkedRadius) {
     mBannerManager.getBannerOptions().setIndicatorSliderWidth(normalRadius * 2, checkedRadius * 2);
     return this;
   }
 
-  public BannerViewPager<T> setIndicatorSliderWidth(int indicatorWidth) {
+  public BannerViewPager<T> setIndicatorSliderWidth(@Px int indicatorWidth) {
     setIndicatorSliderWidth(indicatorWidth, indicatorWidth);
     return this;
   }
@@ -763,12 +764,12 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * if the indicator style is {@link com.zhpan.indicator.enums.IndicatorStyle#CIRCLE } means
    * checked circle diameter
    */
-  public BannerViewPager<T> setIndicatorSliderWidth(int normalWidth, int checkWidth) {
+  public BannerViewPager<T> setIndicatorSliderWidth(@Px int normalWidth, @Px int checkWidth) {
     mBannerManager.getBannerOptions().setIndicatorSliderWidth(normalWidth, checkWidth);
     return this;
   }
 
-  public BannerViewPager<T> setIndicatorHeight(int indicatorHeight) {
+  public BannerViewPager<T> setIndicatorHeight(@Px int indicatorHeight) {
     mBannerManager.getBannerOptions().setIndicatorHeight(indicatorHeight);
     return this;
   }
@@ -778,7 +779,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    *
    * @param indicatorGap indicator gap
    */
-  public BannerViewPager<T> setIndicatorSliderGap(int indicatorGap) {
+  public BannerViewPager<T> setIndicatorSliderGap(@Px int indicatorGap) {
     mBannerManager.getBannerOptions().setIndicatorGap(indicatorGap);
     return this;
   }
@@ -1024,7 +1025,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @param revealWidth In the multi-page mode, The exposed width of the items on the left and right
    * sides
    */
-  public BannerViewPager<T> setRevealWidth(int revealWidth) {
+  public BannerViewPager<T> setRevealWidth(@Px int revealWidth) {
     setRevealWidth(revealWidth, revealWidth);
     return this;
   }
@@ -1035,7 +1036,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @param leftRevealWidth The exposed width of left side
    * @param rightRevealWidth The exposed width of right side
    */
-  public BannerViewPager<T> setRevealWidth(int leftRevealWidth, int rightRevealWidth) {
+  public BannerViewPager<T> setRevealWidth(@Px int leftRevealWidth, @Px int rightRevealWidth) {
     mBannerManager.getBannerOptions().setRightRevealWidth(rightRevealWidth);
     mBannerManager.getBannerOptions().setLeftRevealWidth(leftRevealWidth);
     return this;
@@ -1049,7 +1050,8 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
     return this;
   }
 
-  public BannerViewPager<T> setIndicatorMargin(int left, int top, int right, int bottom) {
+  public BannerViewPager<T> setIndicatorMargin(@Px int left, @Px int top, @Px int right,
+      @Px int bottom) {
     mBannerManager.getBannerOptions().setIndicatorMargin(left, top, right, bottom);
     return this;
   }
@@ -1193,7 +1195,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @deprecated Use {@link #setRoundCorner(int)} instead.
    */
   @Deprecated
-  public BannerViewPager<T> setRoundRect(int radius) {
+  public BannerViewPager<T> setRoundRect(@Px int radius) {
     return setRoundCorner(radius);
   }
 
@@ -1207,7 +1209,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @deprecated Use {@link #setRoundCorner(int, int, int, int)} instead.
    */
   @Deprecated
-  public BannerViewPager<T> setRoundRect(int topLeftRadius, int topRightRadius,
+  public BannerViewPager<T> setRoundRect(@Px int topLeftRadius, @Px int topRightRadius,
       int bottomLeftRadius,
       int bottomRightRadius) {
     return setRoundCorner(topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius);