我创建了一个无限扩展FragmentPagerAdapter(在这个站点上有关于如何实现这一点的示例)。这允许我迭代 50 个(任意数量)52 个片段(每周一个)的集合,从而为用户提供无限的片段感觉。
通过调用在片段之间滚动/跳转时ViewPager.setCurrentItem,我看到了两种情况:
ViewPager.setCurrentItemInternal(查找以单词开头的注释We are doing a jump by more than one page)setCurrentItem在smoothScroll设置为true(ie setCurrentItem(i, true))时调用,新的片段才会正确显示在屏幕上;否则会出现空白屏幕据我所知,这可能是因为其中ViewPager.scrollToItem包含以下代码:
if (smoothScroll) {
smoothScrollTo(destX, 0, velocity);
if (dispatchSelected) {
dispatchOnPageSelected(item);
}
} else {
if (dispatchSelected) {
dispatchOnPageSelected(item);
}
completeScroll(false);
scrollTo(destX, 0);
pageScrolled(destX);
}
Run Code Online (Sandbox Code Playgroud)
这是我超出我的深度的地方。为什么这if/else会导致我正在经历的现象?
我已经在VS10和armcc4.1 [Build 561]上测试了以下代码的编译.函数depth1()和depth2()都在VS上编译,但是armcc只会编译depth1(),同时为depth2()提供错误304(没有匹配参数列表的实例).当foo和bar是非静态的时,它也会在armcc上编译得很好.
我很乐意明白为什么.
template <class T>
static T foo(T arg)
{
return arg*5;
}
template <class T>
static T bar(T arg)
{
return foo<T>(arg);
}
void depth2()
{
int i = 12;
i = bar<int>(i);
}
void depth1()
{
int i = 12;
i = foo<int>(i);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用a GestureDetector.OnGestureListener来实现Android中的双指缩放.我正在扩展一个TextView类,因此该方法setTextSize()已经实现.以下是我的代码onScroll().
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if(LOGGING) Log.v(MODULE_NAME, "onScroll()");
float x, y;
float oldDist, newDist;
if (e2.getPointerCount() == 2 &&
((e2.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_MOVE)) {
x = e2.getHistoricalX(0, 0) - e2.getHistoricalX(1, 0);
y = e2.getHistoricalY(0, 0) - e2.getHistoricalY(1, 0);
oldDist = FloatMath.sqrt(x * x + y * y);
if (oldDist > 10) {
if (LOGGING) Log.d(MODULE_NAME, "Starting ZOOM mode");
x = e2.getX(0) - e2.getX(1); …Run Code Online (Sandbox Code Playgroud)