android切换卡顿解决方法
如果想要让应用用户流畅的滑动体验的话,那么就必须对activity和fragment的生命周期有一个完整的概念以及在何种情况下会触发哪些事件。
在自己目前做的项目中,就遇到了这样的问题,那么就把自己的解决方法罗列,重点在于onpause,onstop,onstart,onresume的事件处理。
某些耗时的操作延迟加载,先展示总体页面。
当对某些复杂的页面进行切换时,先隐藏后显示,如果不是特别卡顿不需要隐藏,如果卡顿严重的话强烈推荐隐藏,提升用户体验。
代码如下:
package com.hengtiansoft.mecb.fragment; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener; import com.hengtiansoft.mecb.R;
import com.hengtiansoft.mecb.adapter.FragmentTabPagerAdapter;
import com.hengtiansoft.mecb.adapter.ProductOnSaleAdapter;
import com.hengtiansoft.mecb.model.MenuProductOnSaleModel;
import com.viewpagerindicator.UnderlinePageIndicator; public class MenuProductFragment extends BaseFragment{ private ViewPager mVpProductPage;
private FragmentTabPagerAdapter mTabPagerProductAdapter;
private List<BaseFragment> mProductTabFragment; private RadioGroup mRgProductTab;
private RadioButton mRbOnSale;
private RadioButton mRbForSale;
private RadioButton mRbOffSale; private UnderlinePageIndicator mIndicator;
private View mView; //流畅显示切换所用的线程
private Handler handler = new Handler(); @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_menu_product, container, false);
initView(mView); return mView;
} @Override
public void onStart() {
super.onStart();
handler.postDelayed(new Runnable() {
public void run() {
setData(mView);
}
}, 200);
setListener(mView);
} @Override
public void onResume() {
super.onResume();
handler.postDelayed(new Runnable() {
public void run() {
mVpProductPage.setVisibility(View.VISIBLE);
}
}, 0);
} @Override
public void onPause() {
super.onPause();
handler.postDelayed(new Runnable() {
public void run() {
mVpProductPage.setVisibility(View.INVISIBLE);
}
}, 100);
} private void initView(View view) {
mVpProductPage = (ViewPager)view.findViewById(R.id.vp_product_page);
mIndicator = (UnderlinePageIndicator)view.findViewById(R.id.indicator_product_sort);
mRgProductTab = (RadioGroup) view.findViewById(R.id.rg_product_tab);
mRbOnSale = (RadioButton)view.findViewById(R.id.rb_product_onsale);
mRbOffSale = (RadioButton)view.findViewById(R.id.rb_product_offsale);
mRbForSale = (RadioButton)view.findViewById(R.id.rb_product_forsale);
} private void setData(View view) {
mProductTabFragment = new ArrayList<BaseFragment>();
mProductTabFragment.add(new ProductOnSaleFragment());
mProductTabFragment.add(new ProductForSaleFragment());
mProductTabFragment.add(new ProductOffSaleFragment()); mTabPagerProductAdapter = new FragmentTabPagerAdapter(mProductTabFragment,
getChildFragmentManager());
mVpProductPage.setAdapter(mTabPagerProductAdapter);
mVpProductPage.setOffscreenPageLimit(2);
mIndicator.setViewPager(mVpProductPage);
mIndicator.setFades(false);
} private void setListener(View view) {
mRgProductTab.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override
public void onCheckedChanged(RadioGroup arg0, int checkedId) {
if(checkedId == mRbOnSale.getId()){
mVpProductPage.setCurrentItem(0,false);
}else if(checkedId == mRbForSale.getId()){
mVpProductPage.setCurrentItem(1,false);
}else{
mVpProductPage.setCurrentItem(2,false);
}
}
}); mIndicator.setOnPageChangeListener(new OnPageChangeListener(){ @Override
public void onPageScrollStateChanged(int position) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
switch(position){
case 0:
mRbOnSale.setChecked(true);
break;
case 1:
mRbForSale.setChecked(true);
break;
case 2:
mRbOffSale.setChecked(true);
break;
default:
break;
}
}
}); } }
android切换卡顿解决方法的更多相关文章
- python学习笔记 | PyCharm出现卡顿解决方法
问题:使用pycharm时常出现 the IDE is running low on memory 的问题 表示pycharm这款IDE使用内存不足 需要在系统内存充足的情况下扩充IDE memory ...
- ViewPager+Fragment切换卡顿解决办法
1.ViewPager设置预加载 我有4个tag,都不想被销毁,设置预加载个数为3. ViewPager viewPager; viewPager.setOffscreenPageLimit(3); ...
- Android Studio 卡顿解决
每次升级/安装 Android Studio 之后最好都修改一下这个参数:到 Android Studio 安装目录,找到 bin/studio(64?).vmoptions(文件名可能因操作系统而不 ...
- h5页面滑动卡顿解决方法
解决方式: 给滚动的元素加样式:-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling(允许独立的滚动区域和触摸回弹) 如果值为au ...
- Windows10 磁盘活动时间百分之百导致系统卡顿解决方法
最近电脑边的特别慢,打开任务管理器发现是磁盘活动时间时不时的就会变成100%.起初是以为硬盘出问题了,后来网上查了一下才发现很多人都遇到过这个问题,其原因就是Windows的SuperFetch和家庭 ...
- .NET Core 2.0 httpclient 请求卡顿解决方法
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip,UseProxy ...
- ViewPager -- Fragment 切换卡顿 性能优化
当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即 Fragment需要加载UI内容,而又频繁地切换Fragment, ...
- bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法
bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法 bootsrtap框架做的h5页面,在android手机下没有卡顿问题,在苹果手机就一直存在这问题,开始毫无头绪 ...
- ART:Android 摆脱卡顿的希望?
与 iOS 相比,Android 的用户体验有个相对糟糕的开始.在很长的时间里,界面一直丑小鸭,卡顿也是挥不去的痛.不过,在 Google 的全力推动,以及硬件厂商的响应下,Android 还是跨越各 ...
随机推荐
- Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage
ylbtech-Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage 1.返回顶部 1.1. pack ...
- 《啊哈算法》中P81解救小哈
题目描述 首先我们用一个二维数组来存储这个迷宫,刚开始的时候,小哼处于迷宫的入口处(1,1),小哈在(p,q).其实这道题的的本质就在于找从(1,1)到(p,q)的最短路径. 此时摆在小哼面前的路有两 ...
- Scrapy下载器中间件用法示例
1.爬虫文件httpbin.py # -*- coding: utf-8 -*- import scrapy class HttpbinSpider(scrapy.Spider): name = 'h ...
- TensorFlow 学习笔记(2)----placeholder的使用
此系列将会每日持续更新,欢迎关注 在TensorFlow中输入值的方式是通过placeholder来实现 例如:做两个数的乘法时,是先准备好两个place, 再将输出值定义成两数的乘法 最后利用ses ...
- 并发通信Manage,队列, 互斥锁
目录 Manage 队列 先入先出 互斥锁 Manage 进程间的通信是被限制的 from multiprocessing import Process a = 1 def func(): glob ...
- Master Nginx(8) - Troubleshooting Techniques
Analyzing log files Error log file formats Error log file entry examples Configuring advanced loggin ...
- ERROR: mount point </.alt.rootd3_EISMar14/opt/oracle/product/10.2> is already in use
在给solaris系统升级的时候,用lu方法遇到下面的错误. -bash-3.2# lumount rootd3_EISMar14 ERROR: mount point </.alt.rootd ...
- CF #330 D2 E
相当于给你一些点,要你最多删除不超过k,使得能使用一个边长为整数的长方形,与XY轴平行,使长方形的面积最小. 上课时拿笔来画画,然后忽然思路就开了,要是比赛也这样就好了~~先按X,Y分别排序,由于K较 ...
- LA 4850 贪心
感谢SF巨和WH巨的指导.. 首先,YY得到一个结论,罚值最大的最小值必定是按照截止时间排序得到的.然后,选一个任务插到其他位置,必定产生罚值最大值更大的情况,但有可能产生两个罚值最大情况和更小的情况 ...
- springmvc 中开发Server Send Event
springmvc 中开发Server Send Event 学习了:http://blog.csdn.net/leiliz/article/details/55195203 https://www. ...