【问题标题】:Android Fragment Oncreateview LoadanimationAndroid Fragment Oncreateview 加载动画
【发布时间】:2013-07-25 08:22:11
【问题描述】:

我创建了一个应用,它使用 antonyt 的 InfiniteViewpager。

我想在创建视图时在 Imageview 上添加一个动画,但我的动画工作了几次,并非总是如此。代码如下:

public class ColourFragment extends Fragment {


private int identifier;
private String logo;




@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();

identifier = args.getInt("identifier");
logo = args.getString("logo");
}

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View V = inflater.inflate(R.layout.radiologok, container, false);

我想要动画的ImageView

    ImageView imageView = (ImageView)V.findViewById(R.id.radiologovalaszto); 


    ProgressBar progressBar = (ProgressBar) V.findViewById(R.id.progressBar1);

    DisplayMetrics displaymetrics = new DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int height = displaymetrics.heightPixels / 4 * 3;
    int width = displaymetrics.widthPixels / 4 * 3;  


    imageView.setAdjustViewBounds(true);
    imageView.getLayoutParams().height = height;
    imageView.getLayoutParams().width = width;

加载 Android Query 库以从 Web 获取图像。

   AQuery aq = new AQuery(getActivity());
   AQUtility.setDebug(true);
   aq.hardwareAccelerated11();

图像已设置。

aq.id(imageView).progress(progressBar).image(logo, true, true, width, 0);

这里我想添加Animation

    Animation pulse = AnimationUtils.loadAnimation(getActivity(), R.anim.pulse);
imageView.startAnimation(pulse);

    Return V;

}

这是我的动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<scale
    android:duration="1000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0.5"
    android:toYScale="0.5" />
<scale
    android:duration="1000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="1000"
    android:toXScale="2"
    android:toYScale="2" />
   </set>

我使用片段适配器加载视图:

 final PagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {

                @Override
                public int getCount() {
                return Radiologos.length;
                }

                @Override
                public Fragment getItem(int position) {
                Fragment fragment = new ColourFragment();
                Bundle args = new Bundle();

                args.putString("logo", Radiologos[position]);
                args.putInt("identifier", position);
                fragment.setArguments(args);
                return fragment;
                }
            };

【问题讨论】:

  • 你在重用视图吗?这是在任何列表视图中吗?
  • 但是你在哪里展示这个片段?在列表或活动或 Viewpager 中,请在您使用它的地方发布代码
  • 用 fragmentadapter 编辑了我的帖子。
  • 您使用 viewpager,因此只有在您将页面滑动到前面或后面的几个数字 (+2) 之后,才不会为下一个和上一个视图重新创建视图(在创建一次之后)视图已重新创建,那么您的视图寻呼机中有多少页??
  • 36 + 2,因为它是一个 infinityviewpager。

标签: android animation fragment


【解决方案1】:

试试这个,它可能有用

1st创建一个包含一些静态变量的类,以便我们以后可以使用它

StaticVariables.java

public static ArrayList<ImageView> listOfImageViews = new ArrayList<ImageView>();

第二次现在在onCreateView 上,您照常创建imageview,现在将其传递给我们刚刚创建的静态变量

imageView.setAdjustViewBounds(true);
imageView.getLayoutParams().height = height;
imageView.getLayoutParams().width = width;
....
StaticVariable.listOfImageViews.add(imageview);

第三现在在您使用的视图寻呼机上添加一个 pageListener 并在 onPageSelected 上添加动画到 imageview 并启动动画

mPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            Log.d(LOG_TAG, "onPageSelected  " + arg0);
            //Create your animation
            Animation pulse = AnimationUtils.loadAnimation(getActivity(), R.anim.pulse);
            //Start your animation
            StaticVariable.listOfImageViews.get(arg0).startAnimation(pulse);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {}

        @Override
        public void onPageScrollStateChanged(int arg0) {}
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多