下面是效果图和对应的类和布局:
1.加载异常:2.加载正常:3.MainActivity:
public class MainActivity extends BaseActivity implements OnTabSelectListener, ViewPager.OnPageChangeListener { @BindView(R.id.vp_container)
NoScrollViewPager mViewPager;
@BindView(R.id.ctl_bottom_bar)
CommonTabLayout mCommonTabLayout;
@BindView(R.id.rl_main_root)
RelativeLayout mRootView; private static final String TAG = "MainActivity";
private ArrayList<Fragment> mFragments = new ArrayList<>();
private String[] mTitles = {"首页", "福利", "金融生活", "我的"}; /*底部导航标题*/
// private String[] mTitles = {"首页", "福利", "我的"}; /*底部导航标题*/
private int[] mIconUncheckIds = {R.mipmap.home_uncheck, R.mipmap.welfare_uncheck, R.mipmap.life_uncheck, R.mipmap.mine_uncheck}; /*未选中的icon*/
private int[] mIconCheckedIds = {R.mipmap.home_checked, R.mipmap.welfare_checked, R.mipmap.life_checked, R.mipmap.mine_checked}; /*选中时的icon*/
private ArrayList<CustomTabEntity> mTabEntities = new ArrayList<>();
private VersionPresenter presenter = new VersionPresenter(this);
long exitTime = 0;
long touchTime = 2000; public static void open(Context context, String checkBill) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("checkBill", checkBill);//如果是在授权成功后页面跳转到这里,直接显示到账单页
context.startActivity(intent);
} public static void open(Context context, String title, String url) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("title", title);
intent.putExtra("url", url);
context.startActivity(intent);
} @Override
protected int getLayout() {
return R.layout.activity_main;
} @Override
protected void onResume() {
super.onResume();
// getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);//隐藏软键盘
// boolean login = UserManager.getInstance().isLogin();
// if(!login){
// mCommonTabLayout.setCurrentTab(0);
// mViewPager.setCurrentItem(0);
// }
} @Override
protected void initView(Bundle savedInstanceState) {
mToolbar.setVisibility(View.GONE);
// Log.d(TAG, "initView: 2030"); //todo:首页分为三种类型: 1.提交后首页 2.精准匹配全部已提交首页 3.未匹配到产品首页
mFragments.add(HomeFragment.getInstance(mCommonTabLayout, mViewPager));
// mFragments.add(ExactHomeFragment.getInstance(mViewPager,mCommonTabLayout));
// mFragments.add(UnmatchHomeFragment.getInstance());
mFragments.add(WealFragment.getInstance());
// mFragments.add(WebWealFragment.getInstance());
mFragments.add(LifeFragment.getInstance());
// mFragments.add(BillFragment.getInstance()); //原生账单
// mFragments.add(WebBillFragment.getInstance()); //网页版账单
mFragments.add(MineFragment.getInstance());
} @Override
protected void initData() {
/*添加数据集*/
for (int i = 0; i < mTitles.length; i++) {
mTabEntities.add(new TabEntity(mTitles[i], mIconCheckedIds[i], mIconUncheckIds[i]));
}
mViewPager.setAdapter(new MainPagerAdapter(getSupportFragmentManager(), mFragments, mTitles));
setLayout();
//设置未读消息红点
// mCommonTabLayout.showDot(1); presenter.checkVersion(false); String title = getIntent().getStringExtra("title");//未登录首页的H5标题和地址
String url = getIntent().getStringExtra("url");
Log.d(TAG, " 1543 onSuccess: title=" + title + " url=" + url);
if (title != null && url != null && title != "" && url != "") {
ToastUtils.showLong(R.string.the_phone_number_has_been_copied);
WebViewActivity.open(this, url, title);
}
} @Override
protected void initEvent() {
// RxManager.getMethod().authCode()
} private void setLayout() {
mCommonTabLayout.setTabData(mTabEntities);
mCommonTabLayout.setOnTabSelectListener(this);
mViewPager.addOnPageChangeListener(this);
String checkBill = getIntent().getStringExtra("checkBill");//如果是在授权成功后页面跳转到这里,直接显示到账单页
// if (checkBill.equals("checkBill")) {
// Log.d(TAG, "setLayout: 1644 222222222222222");
// mViewPager.setCurrentItem(1);
// mCommonTabLayout.setCurrentTab(1);
// Log.d(TAG, "setLayout: 1644 11111111111111");
// } else {// }
// mViewPager.setCurrentItem(1);
// mCommonTabLayout.setCurrentTab(1);
int currentTab = mCommonTabLayout.getCurrentTab();
Log.d(TAG, "setLayout: 1519= " + currentTab);
}
@Override
public void onTabSelect(int position) {
mViewPager.setCurrentItem(position, false); //false取消切换过渡动画
switch (position) {
case 0:
// boolean homeLogin = UserManager.getInstance().isLogin();
// if (homeLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
// } else {
// LoginActivity.open(this, "", "");
// }
break;
case 1:
// boolean wealLogin = UserManager.getInstance().isLogin();
// if (wealLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
// } else {
// LoginActivity.open(this, "", "");
// }
break;
case 2:
boolean lifeLogin = UserManager.getInstance().isLogin();
if (lifeLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
} else {
LoginActivity.open(this, "", "");
}
break;
case 3:
boolean mineLogin = UserManager.getInstance().isLogin();
if (mineLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, false); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
} else {
LoginActivity.open(this, "", "");
}
break;
}
} @Override
public void onTabReselect(int position) { } @Override
public void onPageScrolled(int i, float v, int i1) { } @Override
public void onPageSelected(int position) {
mCommonTabLayout.setCurrentTab(position);
} @Override
public void onPageScrollStateChanged(int i) { } @Override
public void onBackPressed() {
int currentTab = mCommonTabLayout.getCurrentTab();
Log.d(TAG, "onBackPressed: 1532= " + currentTab);//(选中账单)等于2的时候判断返回 if ((System.currentTimeMillis() - exitTime) > touchTime) {// 判断2次点击事件时间
ToastUtils.showShort(R.string.back_desk);
exitTime = System.currentTimeMillis();
} else {
ActivityUtils.finishAllActivities(); //结束所有 Activity
}
}
}
4.加载WebView偶尔出问题的Fragment:
public class LifeFragment extends LazyFragment { @BindView(R.id.tl_life_web)
Toolbar mTitle;
@BindView(R.id.wv_web_life)
WebView mWebView;
@BindView(R.id.pb_web_view_life)
ProgressBar progressBar;
@BindView(R.id.fl_life_root_view)
FrameLayout mRootView;
@BindView(R.id.ll_life_root)
LinearLayout mLifeRoot; private static final String TAG = "LifeFragment"; public static LifeFragment getInstance() {
LifeFragment fragment = new LifeFragment();
return fragment;
} @Override
protected int getLayout() {
return R.layout.fragment_life;
} @Override
protected void initView(View view, Bundle savedInstanceState) {
Log.d(TAG, " 1342 initView: 111111111111111");
ImmersionBar.with(this).titleBar(mTitle).init();
StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(), true); //设置状态栏字体颜色
} @Override
public void fetchData() {
Log.d(TAG, " 1342 initView: 222222222222222");
setData();
} private void setData() {
mWebView.clearCache(true);
mWebView.clearHistory();
mRootView.removeAllViews();
mRootView.addView(mLifeRoot);
mWebView.setVisibility(View.VISIBLE);
mWebView.getSettings().setJavaScriptEnabled(true);//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
mWebView.getSettings().setDomStorageEnabled(true);//开启DOM //启用数据库
mWebView.getSettings().setDatabaseEnabled(true);
//启用地理定位,默认为true
mWebView.getSettings().setGeolocationEnabled(true);
//自适应屏幕大小
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
mWebView.getSettings().setLoadWithOverviewMode(true);
//支持屏幕缩放
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setDisplayZoomControls(false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//解决部分图片不显示
} String url = "https://www.cardfanr.com/index?merchantNo=8150737830";
// String url = "https:
1.加载异常:2.加载正常:3.MainActivity:
public class MainActivity extends BaseActivity implements OnTabSelectListener, ViewPager.OnPageChangeListener { @BindView(R.id.vp_container)
NoScrollViewPager mViewPager;
@BindView(R.id.ctl_bottom_bar)
CommonTabLayout mCommonTabLayout;
@BindView(R.id.rl_main_root)
RelativeLayout mRootView; private static final String TAG = "MainActivity";
private ArrayList<Fragment> mFragments = new ArrayList<>();
private String[] mTitles = {"首页", "福利", "金融生活", "我的"}; /*底部导航标题*/
// private String[] mTitles = {"首页", "福利", "我的"}; /*底部导航标题*/
private int[] mIconUncheckIds = {R.mipmap.home_uncheck, R.mipmap.welfare_uncheck, R.mipmap.life_uncheck, R.mipmap.mine_uncheck}; /*未选中的icon*/
private int[] mIconCheckedIds = {R.mipmap.home_checked, R.mipmap.welfare_checked, R.mipmap.life_checked, R.mipmap.mine_checked}; /*选中时的icon*/
private ArrayList<CustomTabEntity> mTabEntities = new ArrayList<>();
private VersionPresenter presenter = new VersionPresenter(this);
long exitTime = 0;
long touchTime = 2000; public static void open(Context context, String checkBill) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("checkBill", checkBill);//如果是在授权成功后页面跳转到这里,直接显示到账单页
context.startActivity(intent);
} public static void open(Context context, String title, String url) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("title", title);
intent.putExtra("url", url);
context.startActivity(intent);
} @Override
protected int getLayout() {
return R.layout.activity_main;
} @Override
protected void onResume() {
super.onResume();
// getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);//隐藏软键盘
// boolean login = UserManager.getInstance().isLogin();
// if(!login){
// mCommonTabLayout.setCurrentTab(0);
// mViewPager.setCurrentItem(0);
// }
} @Override
protected void initView(Bundle savedInstanceState) {
mToolbar.setVisibility(View.GONE);
// Log.d(TAG, "initView: 2030"); //todo:首页分为三种类型: 1.提交后首页 2.精准匹配全部已提交首页 3.未匹配到产品首页
mFragments.add(HomeFragment.getInstance(mCommonTabLayout, mViewPager));
// mFragments.add(ExactHomeFragment.getInstance(mViewPager,mCommonTabLayout));
// mFragments.add(UnmatchHomeFragment.getInstance());
mFragments.add(WealFragment.getInstance());
// mFragments.add(WebWealFragment.getInstance());
mFragments.add(LifeFragment.getInstance());
// mFragments.add(BillFragment.getInstance()); //原生账单
// mFragments.add(WebBillFragment.getInstance()); //网页版账单
mFragments.add(MineFragment.getInstance());
} @Override
protected void initData() {
/*添加数据集*/
for (int i = 0; i < mTitles.length; i++) {
mTabEntities.add(new TabEntity(mTitles[i], mIconCheckedIds[i], mIconUncheckIds[i]));
}
mViewPager.setAdapter(new MainPagerAdapter(getSupportFragmentManager(), mFragments, mTitles));
setLayout();
//设置未读消息红点
// mCommonTabLayout.showDot(1); presenter.checkVersion(false); String title = getIntent().getStringExtra("title");//未登录首页的H5标题和地址
String url = getIntent().getStringExtra("url");
Log.d(TAG, " 1543 onSuccess: title=" + title + " url=" + url);
if (title != null && url != null && title != "" && url != "") {
ToastUtils.showLong(R.string.the_phone_number_has_been_copied);
WebViewActivity.open(this, url, title);
}
} @Override
protected void initEvent() {
// RxManager.getMethod().authCode()
} private void setLayout() {
mCommonTabLayout.setTabData(mTabEntities);
mCommonTabLayout.setOnTabSelectListener(this);
mViewPager.addOnPageChangeListener(this);
String checkBill = getIntent().getStringExtra("checkBill");//如果是在授权成功后页面跳转到这里,直接显示到账单页
// if (checkBill.equals("checkBill")) {
// Log.d(TAG, "setLayout: 1644 222222222222222");
// mViewPager.setCurrentItem(1);
// mCommonTabLayout.setCurrentTab(1);
// Log.d(TAG, "setLayout: 1644 11111111111111");
// } else {// }
// mViewPager.setCurrentItem(1);
// mCommonTabLayout.setCurrentTab(1);
int currentTab = mCommonTabLayout.getCurrentTab();
Log.d(TAG, "setLayout: 1519= " + currentTab);
}
@Override
public void onTabSelect(int position) {
mViewPager.setCurrentItem(position, false); //false取消切换过渡动画
switch (position) {
case 0:
// boolean homeLogin = UserManager.getInstance().isLogin();
// if (homeLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
// } else {
// LoginActivity.open(this, "", "");
// }
break;
case 1:
// boolean wealLogin = UserManager.getInstance().isLogin();
// if (wealLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
// } else {
// LoginActivity.open(this, "", "");
// }
break;
case 2:
boolean lifeLogin = UserManager.getInstance().isLogin();
if (lifeLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
} else {
LoginActivity.open(this, "", "");
}
break;
case 3:
boolean mineLogin = UserManager.getInstance().isLogin();
if (mineLogin) {
StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, false); //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true); //设置状态栏字体颜色
} else {
LoginActivity.open(this, "", "");
}
break;
}
} @Override
public void onTabReselect(int position) { } @Override
public void onPageScrolled(int i, float v, int i1) { } @Override
public void onPageSelected(int position) {
mCommonTabLayout.setCurrentTab(position);
} @Override
public void onPageScrollStateChanged(int i) { } @Override
public void onBackPressed() {
int currentTab = mCommonTabLayout.getCurrentTab();
Log.d(TAG, "onBackPressed: 1532= " + currentTab);//(选中账单)等于2的时候判断返回 if ((System.currentTimeMillis() - exitTime) > touchTime) {// 判断2次点击事件时间
ToastUtils.showShort(R.string.back_desk);
exitTime = System.currentTimeMillis();
} else {
ActivityUtils.finishAllActivities(); //结束所有 Activity
}
}
}
4.加载WebView偶尔出问题的Fragment:
public class LifeFragment extends LazyFragment { @BindView(R.id.tl_life_web)
Toolbar mTitle;
@BindView(R.id.wv_web_life)
WebView mWebView;
@BindView(R.id.pb_web_view_life)
ProgressBar progressBar;
@BindView(R.id.fl_life_root_view)
FrameLayout mRootView;
@BindView(R.id.ll_life_root)
LinearLayout mLifeRoot; private static final String TAG = "LifeFragment"; public static LifeFragment getInstance() {
LifeFragment fragment = new LifeFragment();
return fragment;
} @Override
protected int getLayout() {
return R.layout.fragment_life;
} @Override
protected void initView(View view, Bundle savedInstanceState) {
Log.d(TAG, " 1342 initView: 111111111111111");
ImmersionBar.with(this).titleBar(mTitle).init();
StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(), true); //设置状态栏字体颜色
} @Override
public void fetchData() {
Log.d(TAG, " 1342 initView: 222222222222222");
setData();
} private void setData() {
mWebView.clearCache(true);
mWebView.clearHistory();
mRootView.removeAllViews();
mRootView.addView(mLifeRoot);
mWebView.setVisibility(View.VISIBLE);
mWebView.getSettings().setJavaScriptEnabled(true);//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
mWebView.getSettings().setDomStorageEnabled(true);//开启DOM //启用数据库
mWebView.getSettings().setDatabaseEnabled(true);
//启用地理定位,默认为true
mWebView.getSettings().setGeolocationEnabled(true);
//自适应屏幕大小
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
mWebView.getSettings().setLoadWithOverviewMode(true);
//支持屏幕缩放
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setDisplayZoomControls(false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//解决部分图片不显示
} String url = "https://www.cardfanr.com/index?merchantNo=8150737830";
// String url = "https:
解决方案 »
- android gridView图片显示的问题
- android 退出应用后,还需要缓存从数据库查询出来的数据吗
- 在4.X上编写的程序无法在2.3上运行吗?
- 如何locker在系统locker之前执行
- ExpandableListView如何能立即实时显示出新的赋值?
- AlertDialog 背景色充不满?
- 关于android 网络问题......大家一起讨论下.
- android模拟器进不来
- android的DatePickerDialog和TimePickerDialog如何禁用长按事件
- 求助:自定义BaseAdapter调用了getCount()方法却没有执行getView()
- android 相同分辨率,屏幕尺寸不同,怎么适配啊
- 使用TelephonyManager导致停止运行
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <android.support.v7.widget.Toolbar
android:id="@+id/tl_life_web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="金融生活"
android:textColor="#FF333333"
android:textSize="20sp" /> </android.support.v7.widget.Toolbar> <FrameLayout
android:id="@+id/fl_life_root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"> <LinearLayout
android:id="@+id/ll_life_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <ProgressBar
android:id="@+id/pb_web_view_life"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="3dp"
android:progressDrawable="@drawable/web_view_progress_layer_list"
android:visibility="gone" /> <WebView
android:id="@+id/wv_web_life"
android:layout_width="match_parent"
android:layout_height="match_parent"> </WebView> </LinearLayout> </FrameLayout></LinearLayout>
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (mWebView != null) {
// mWebView.clearCache(true);
// mWebView.clearHistory();
// mRootView.removeAllViews();
// mRootView.addView(mLifeRoot);
// mWebView.setVisibility(View.VISIBLE);
// setData();
mWebView.reload();
}
}
}