2016-10-14 3 views
2

viewpagerを使用して4つの画像でアプリのイントロツアーを作成しようとしています。 前の画像から次の画像にスライドするのに非常に時間がかかります。ビューページャーを使用した4つの画像のスライドが非常に遅い

I/Choreographer: Skipped 100 frames! The application may be doing too much work on its main thread. 
I/Choreographer: Skipped 94 frames! The application may be doing too much work on its main thread. 

をスライドさせながら、私は、以下の方法を試みたlogcatに次のログを取得しています。)

1 setImageResourceを(レイテンシしゃっくりを引き起こす可能性がUIスレッド、上のビットマップの読み込みとデコードを行います。これが問題であれば、2.setImageDrawable(android.graphics.drawable.Drawable)または3.setImageBitmap(android.graphics.Bitmap)とBitmapFactoryを代わりに使用することを検討してください。 サイズとあなたのイメージの解像度も遅いスクロールの原因となることができます、 はあなたの大きな画像や利用のサムネイル画像を作成してみてください。

も試みスタックオーバーフローを(私は描画可能に30-50kbする100キロバイトから画像のサイズを減らします)それでも

Memory leak with images in viewpager

以前からビューページャの次の画像に多くの時間を割い画像:以下の答え。 私は別のデバイスでそれをテストしました。 moto xでは、samsung、moto E、Lenovoのような最も遅いデバイスや他のデバイスを再生する速度は少し速いが、それでもマークにはならない。

私は描画可能なフォルダに4つの画像があり、以下のコードを使用して画像をスライドしようとしています。

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

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == (object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     View itemView = LayoutInflater.from(mContext).inflate(R.layout.pager_item, container, false); 
     ImageView imageView = (ImageView) itemView.findViewById(R.id.img_pager_item); 
     imageView.setImageDrawable(mResources[position]); 
     container.addView(itemView); 
     return itemView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((LinearLayout) object); 
    } 

ありがとうございます!

+0

setImageDrawableをsetImageResourceに変更しようとします。それは私のために働いています。 –

+0

同様に、同じ出力を試しました! –

+1

1)まず画像と解像度のサイズを確認してください。 2)マニフェストファイルに_largeHeap = "true" _を設定します。 3)_Glide_を使用して画像を読み込みます。 – Piyush

答えて

4

異なる密度で表示するために、特定のDrawableのフォルダに画像を入れてみてください!

デフォルトでは、Androidはビットマップ描画ファイル(.png、.jpg、および.gifファイル)を各デバイスの適切な物理サイズでレンダリングするように、デフォルトで調整します。たとえば、アプリケーションでベースライン、中画面密度(mdpi)のビットマップドロワブルしか提供しない場合、システムは高密度画面ではスケーリングし、低密度画面ではスケーリングします。このスケーリングは、ビットマップにアーチファクトを引き起こし、縮小または拡大する可能性があります。あなたのビットマップが最高に見えるようにするには、別の解像度で画面密度を変えて別のバージョンを含める必要があります。

+0

私のために働いた。ありがとう。 – TechBee

+1

@TechBeeお手伝いをお待ちしております!歓声;) – Praneeth

+1

ありがとう、praneeth。これは素晴らしい答えです。私は私のビューページに5ページあります。そして各ページには大きな写真付きのリサイクルビューが1つあります。 viewpagerは遅く、recyclerviewは遅く、drawerLayoutは開くときに遅れがありました。この答えによって、3つの問題が解決されました。 – Arash

2

私は、drawableのすべての4つのイメージを異なるフォルダxhdpi、xxhdpi、mdpi、xxxhdpiに入れて解決しました。

moto x playはxxhpiですが、なぜxxhdpiにイメージがないのがわかりました。

は今、あなたはFLASHの速度とする可能性のある速度でスワイプすることができます:D

関連する問題