1

私の問題は:

以下のようにビューをカスタマイズし、JPTabBarMainMenuをリストビューヘッダーの一部として設定しました。JPTabBarMainMenuには2つのボタンがあり、2つのボタンのいずれかをクリックするとアニメーションが実行されます。

問題は、アニメーションがandroid 2.3.3で非常にうまく動作することですが、4.0.3と4.0.4では動作しません。4.xでは動作しないと思います。理由はわかりません。

JPTabBarMainMenu  extends FrameLayout{

以下のコード:

onAnimationStart/onAnimationRepeat/onAnimationEnd won't getting called.

 FrameLayout.LayoutParams params = (LayoutParams) mSlider.getLayoutParams();

            JPTranslateAnimation slideRightAnimation = new MaringTranslateTranslateAnimation(params.leftMargin, tabItem.getLeft() + offset / 2, 0, 0, mSlider);
            slideRightAnimation.setDuration(slideRightAnimation.computeDuration(
                    JPTranslateAnimation.ANIMATION_STD_DURATION, mTabLayout.getWidth()));
            slideRightAnimation.setRepeatCount(0);
            slideRightAnimation.setFillAfter(true);
            slideRightAnimation.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    isRunningAnimation = true;
                    if(mSelectionChangedListener != null){
                        mSelectionChangedListener.onSelectionChangedStart(oldIndex, mCurrentTab);
                    }

                    if(oldIndex != -1){
                        TabItem item = mTabItems.get(oldIndex);
                        item.onTabItemSelected(false);
                    }
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    isRunningAnimation = false;

                    if(mSelectionChangedListener != null){
                        mSelectionChangedListener.onSelectioinChangedEnd(oldIndex, mCurrentTab);
                    }

                    TabItem item = mTabItems.get(mCurrentTab);
                    item.onTabItemSelected(true);

                    if(mDrawSelectorByDefault == false){
                        mSlider.setVisibility(View.INVISIBLE);
                    }

                }
            });
            if(mSlider.getVisibility() != View.VISIBLE){
                mSlider.setVisibility(View.VISIBLE);
            }
            mSlider.startAnimation(slideRightAnimation);
4

0 に答える 0