我有一个自定义创建的ViewPager,其中适配器填充了主要活动的asynctask。问题是无论滑动内容(或整个内容)有多小,首页滑动事件总是很慢。
如何确定页面滑动不会延迟。(或者这是jvm的工作方式吗?
这里是我的asynctask;
class InitTask extends AsyncTask<Void,String,Void>
{
@Override
protected void onPreExecute() {
categoryDbApt = new CategoryDbAdapter(getBaseContext());
tab1 = (Button) findViewById(R.id.tab1);
tab2 = (Button) findViewById(R.id.tab2);
tab3 = (Button) findViewById(R.id.tab3);
cvp = (CustomViewPager) findViewById(R.id.cvp);
mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
mainLayout.setWillNotDraw(false);
ll = (LinearLayout) findViewById(R.id.ll);
ll.setWillNotDraw(false);
lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT,0);
sa = new SliderAdapter(getSupportFragmentManager());
getSupportActionBar().setTitle(getResources().getString(R.string.dashboard));
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
Toast.makeText(getBaseContext(),values[0],Toast.LENGTH_LONG).show();
}
@Override
protected Void doInBackground(Void... voids) {
fDashboard = new FragmentDashboard();
fExpense = new FragmentExpense();
fExpenseAdd = new FragmentExpenseAdd();
fIncome = new FragmentIncome();
fIncomeAdd = new FragmentIncomeAdd();
fragmentList = new ArrayList<>();
fragmentList.add(fIncomeAdd);
fragmentList.add(fIncome);
fragmentList.add(fDashboard);
fragmentList.add(fExpense);
fragmentList.add(fExpenseAdd);
cvp.setAdapter(sa);
cvp.setCurrentItem(2);
cvp.setOffscreenPageLimit(4);
setListeners();
firstTimeCheck();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
}
}
这里是我的自定义视图分页器类;
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}
@Override
void smoothScrollTo(int x, int y, int velocity) {
super.smoothScrollTo(x, y, 1);
}
}