2013-07-25 2 views
2

Я создал приложение, использующее InfiniteViewpager by antonyt.Android Fragment Oncreateview Loadanimation

Я хочу добавить анимацию на 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, чтобы получить изображение из Интернета.

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> 

загружаю вид с помощью fragmentadapter:

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; 
       } 
      }; 
+0

Вы повторно использовать вид ? Это внутри любого списка? –

+0

Это во фрагменте. – user2617730

+0

Но где вы показываете этот фрагмент? в списке или Activity или Viewpager, и, пожалуйста, напишите код, в котором вы его используете. –

ответ

1

Попробуйте эту вещь, она может работать

первый Создать класс, который содержит некоторые статические переменные, так что мы можем использовать его позже

StaticVariables.java

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

2nd Теперь на onCreateView, где вы создаете imageview, как обычно, и теперь передайте его статусу IC переменная, которую мы только что создали

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

3rd Теперь на вид пейджера, что вы используете добавить 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) {} 
    }); 
Смежные вопросы