Есть ли разница в добавлении одного изображения в 10 раз и 10 различных изображений (одинаковые размеры, одинаковое разрешение, одинаковый размер файла) один раз для анимации.?Анимация медленная в Android
Потому что я добавил 1 изображение 10 раз и предоставил несколько анимаций при прокручивании, это было гладко во время моего взаимодействия. но при добавлении разных изображений (одинаковых размеров, одинакового разрешения, одного и того же размера файла) для моего процесса наблюдается сильное отставание в анимации. Некоторые шаги я пытался улучшить производительность
1.Adding типа слоя и установки нулевым, а анимация закончилась (Это улучшает за один раз анимации, когда анимация непрерывно, это не помогает)
2.Tried Настройки hardwareaccelerated атрибут в манифесте
3.Tried заходящего большой атрибут кучи в очевидном
4.Added кэш анимации для элементов.
5. Прогулка с использованием высокопроизводительных устройств.
Есть ли у нас какие-либо возможности улучшить производительность анимации?
EDITED:
FrameLayout frame = new FrameLayout(this);
frame.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 700));
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(R.drawable.image1);
arrayList.add(R.drawable.image2);
arrayList.add(R.drawable.image3);
arrayList.add(R.drawable.image4);
arrayList.add(R.drawable.image5);
arrayList.add(R.drawable.image6);
arrayList.add(R.drawable.image7);
arrayList.add(R.drawable.image8);
arrayList.add(R.drawable.image9);
arrayList.add(R.drawable.image10);
arrayList.add(R.drawable.image11);
for(int i=0;i<11;i++){
ImageView imgvw = new ImageView(this);
imgvw.setImageResource(arrayList.get(i));
imgvw.setLayoutParams(new ActionBar.LayoutParams(250, 400));
imgvw.setScaleType(ImageView.ScaleType.FIT_XY);
imgvw.setX(this.getResources().getDisplayMetrics().widthPixels/2);
imgvw.setRotationY(-45);
imgvw.setScaleY(0.7f);
frame.addView(imgvw);
}
setContentView(frame);
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()){
case MotionEvent.ACTION_DOWN:{
final AnimatorSet animationSet = new AnimatorSet();
for(int i=0;i<frame.getChildCount();i++){
final ImageView vw = (ImageView) frame.getChildAt(i);
// vw.setLayerType(View.LAYER_TYPE_HARDWARE, null);
animationSet.playTogether(
ObjectAnimator.ofFloat(vw, "rotationY", 45),
ObjectAnimator.ofFloat(vw, "scaleY", 0.8f),
ObjectAnimator.ofFloat(vw, "x", 0)
);
animationSet.setDuration(600);
animationSet.setInterpolator(new DecelerateInterpolator(1.5f));
animationSet.start();
animationSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
// vw.setLayerType(View.LAYER_TYPE_NONE,null);
animationSet.start();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
vw.setX(getResources().getDisplayMetrics().widthPixels/2);
vw.setRotationY(-45);
vw.setScaleY(0.7f);
}
});
}
}
}
Вы можете добавить код, который вы пробовали? Были ли вы выбирать изображения из активов или SDCard или сетей ? –
Его из Assests (из папки ресурсов) @AnkurAggarwal –
Код сэра, код. Мы не можем отлаживать без кода –