-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3 from longluo/dev
Dev
- Loading branch information
Showing
29 changed files
with
6,117 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
149 changes: 149 additions & 0 deletions
149
DroidBase/src/main/java/io/github/longluo/base/FragmentStateAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
package io.github.longluo.base; | ||
|
||
import androidx.annotation.NonNull; | ||
import androidx.annotation.Nullable; | ||
import androidx.fragment.app.Fragment; | ||
import androidx.fragment.app.FragmentActivity; | ||
import androidx.fragment.app.FragmentManager; | ||
import androidx.lifecycle.Lifecycle; | ||
import androidx.viewpager2.widget.ViewPager2; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
/** | ||
* FragmentStateAdapter 封装 | ||
*/ | ||
public final class FragmentStateAdapter<F extends Fragment> extends androidx.viewpager2.adapter.FragmentStateAdapter { | ||
|
||
/** | ||
* Fragment 集合 | ||
*/ | ||
private final List<F> mFragmentSet = new ArrayList<>(); | ||
|
||
/** | ||
* Fragment 标题 | ||
*/ | ||
private final List<CharSequence> mFragmentTitles = new ArrayList<>(); | ||
|
||
/** | ||
* 当前显示的Fragment | ||
*/ | ||
private F mShowFragment; | ||
|
||
/** | ||
* 当前 ViewPager | ||
*/ | ||
private ViewPager2 mViewPager; | ||
|
||
/** | ||
* 设置成懒加载模式 | ||
*/ | ||
private boolean mLazyMode = true; | ||
|
||
public FragmentStateAdapter(FragmentActivity activity) { | ||
this(activity.getSupportFragmentManager(), activity.getLifecycle()); | ||
} | ||
|
||
public FragmentStateAdapter(Fragment fragment) { | ||
this(fragment.getChildFragmentManager(), fragment.getLifecycle()); | ||
} | ||
|
||
public FragmentStateAdapter(FragmentManager manager, Lifecycle lifecycle) { | ||
super(manager, lifecycle); | ||
} | ||
|
||
@NonNull | ||
@Override | ||
public Fragment createFragment(int position) { | ||
return mFragmentSet.get(position); | ||
} | ||
|
||
public F getItem(int position) { | ||
return mFragmentSet.get(position); | ||
} | ||
|
||
@Override | ||
public long getItemId(int position) { | ||
return getItem(position).hashCode(); | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return mFragmentSet.size(); | ||
} | ||
|
||
@Nullable | ||
public CharSequence getPageTitle(int position) { | ||
return mFragmentTitles.get(position); | ||
} | ||
|
||
/** | ||
* 添加 Fragment | ||
*/ | ||
public void addFragment(F fragment) { | ||
addFragment(fragment, null); | ||
} | ||
|
||
public void addFragment(F fragment, CharSequence title) { | ||
mFragmentSet.add(fragment); | ||
mFragmentTitles.add(title); | ||
|
||
if (mViewPager == null) { | ||
return; | ||
} | ||
|
||
notifyDataSetChanged(); | ||
if (mLazyMode) { | ||
mViewPager.setOffscreenPageLimit(getItemCount()); | ||
} else { | ||
mViewPager.setOffscreenPageLimit(1); | ||
} | ||
} | ||
|
||
/** | ||
* 获取当前的Fragment | ||
*/ | ||
public F getShowFragment() { | ||
return mShowFragment; | ||
} | ||
|
||
/** | ||
* 获取某个 Fragment 的索引(没有就返回 -1) | ||
*/ | ||
public int getFragmentIndex(Class<? extends Fragment> clazz) { | ||
if (clazz == null) { | ||
return -1; | ||
} | ||
for (int i = 0; i < mFragmentSet.size(); i++) { | ||
if (clazz.getName().equals(mFragmentSet.get(i).getClass().getName())) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
|
||
/** | ||
* 设置懒加载模式 | ||
*/ | ||
public void setLazyMode(boolean lazy) { | ||
mLazyMode = lazy; | ||
refreshLazyMode(); | ||
} | ||
|
||
/** | ||
* 刷新加载模式 | ||
*/ | ||
private void refreshLazyMode() { | ||
if (mViewPager == null) { | ||
return; | ||
} | ||
|
||
if (mLazyMode) { | ||
// 设置成懒加载模式(也就是不限制 Fragment 展示的数量) | ||
mViewPager.setOffscreenPageLimit(getItemCount()); | ||
} else { | ||
mViewPager.setOffscreenPageLimit(1); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
<string name="app_name">DroidBase</string> | ||
</resources> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
|
||
<!-- 对话框默认主题 --> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
DroidUtils/src/main/java/io/github/longluo/util/BatteryUtils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package io.github.longluo.util; | ||
|
||
import android.content.Context; | ||
import android.content.Intent; | ||
import android.content.IntentFilter; | ||
import android.os.BatteryManager; | ||
|
||
public class BatteryUtils { | ||
|
||
public static int getLevel(Context context) { | ||
IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); | ||
Intent batteryStatus = context.registerReceiver(null, iFilter); | ||
|
||
return batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) : -1; | ||
} | ||
} |
Oops, something went wrong.