0

ここでこの質問をしました。グライドを使用して幅の広い画像と長い画像をGridView. 私が得た答えは、s の長年の問題でGridViewあり、Jake Wharton の縦横比の画像ビューを試してみましたが、成功しませんでした。RecyclerViewもう1つの提案は、ずらした素晴らしい答えを作ることでしたが、多くの変更がありました

このすべての理由は、私の画像が大きすぎて Picasso がすばやく読み込むことができず、ユーザーはそれが本当に遅いと不満を言っていましたが、Glide (はるかに速いようです) は画像をアスペクト比に合わせて読み込み、グリッドの均一性を台無しにします。 、リンクで確認できます。長い画像は、2 つの幅の広い画像と同じスペースを取ります。とにかく、多くの試行錯誤の後、私は現在、次のように Glide を使用しています。

int width = getActivity().getWindowManager().getDefaultDisplay().getWidth();
int myWidth = width / 2;

Glide.with(getActivity())
     .load(mThumbIds[position])
     .placeholder(R.drawable.placeholder)
     .override(myWidth, myWidth)
     .centerCrop()
     .into(imageView)
;

私はAndroidを初めて使用しますが、これは完全に機能するようです。そして、私の質問は現在、廃止されていること以外getWidthです(アプリはAPI 16+用です)これに何か問題がありますか(画面幅を分割してGlideのサイズ変更呼び出しに渡します)? ビューの測定には時間がかかると思いますが、それでもピカソよりは速いです。誰かがより良いものを提供できますか?

4

2 に答える 2

0

ハニカム未満のAPIの場合はアプローチを使用できますが、それより高いAPIの場合はgetSize()メソッドを使用する必要があります。これには以下のコードを使用します

    if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR2) {
         Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;
        int height = size.y;
    } else {
        Display display = getWindowManager().getDefaultDisplay();
        int width = display.getWidth();
        int height = display.getHeight();
    }
于 2015-10-01T11:41:18.403 に答える
0

使用できますgetDisplayMetrics()

getActivity().getResources().getDisplayMetrics().widthPixels;
于 2015-10-01T12:51:08.993 に答える