我想建立一个像facebook一样的照片布局,在它的Android应用程序中使用。我想实现如下布局:
我已尝试使用recyclelerview显示以下照片:
rv = (RecyclerView) findViewById(R.id.rv);
final MyAdapter adapter = new MyAdapter();
rv.setAdapter(adapter);
GridLayoutManager mLayoutManager = new GridLayoutManager(this, 2);
rv.setLayoutManager(mLayoutManager);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (adapter.getItemCount() == 1) {
return 2;
} else if (adapter.getItemCount() == 2) {
return 1;
} else if (adapter.getItemCount() == 3) {
if (position == 0) {
return 2;
} else {
return 1;
}
} else {
return 1;
}
}
});
现在我没有图像的宽度和高度,我只有该图像的网址。 因此,如果我上传了2张图片,我想检查图像是否是纵向(高度是宽度更大)还是横向,并且需要相应地显示图像。
我使用下面的代码来获取图像的高度和宽度:
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
if (Looper.myLooper()==null)
Looper.prepare();
try { listItemHolder.imageBitmap = Glide.with(mContext).
load(mainImage). asBitmap(). into(-1,-1).
get();
} catch (final ExecutionException e) {
Log.e(TAG, e.getMessage());
} catch (final InterruptedException e) {
Log.e(TAG, e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(Void dummy) {
}
}.execute();
但代码使我的应用程序太慢了。
任何人都可以在这里有任何想法,我怎样才能做到这一点。
答案 0 :(得分:1)
您必须使用StaggeredGridLayoutManager
StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(this, 2);
rv.setLayoutManager(mLayoutManager);
表示
答案 1 :(得分:0)
获取图像的宽度和高度:
您的代码正在使用滑动来加载整个图片,这会使速度变慢。
如果您只想获取尺寸,可以使用位图选项。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType = options.outMimeType;
只需从流中解码即可。