recyclerview瀑布流_图片二次采样
2017-10-14 07:57
417 查看
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MainActivity extends AppCompatActivity { RecyclerView rv; List<String> list; int w_screen; int h_screen; int[] array = {R.mipmap.a, R.mipmap.b}; Bitmap[] imgArray = new Bitmap[2]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindowSize(); rv = (RecyclerView) findViewById(R.id.rv); getBitmapArray(); initRV(); } private void getWindowSize() { DisplayMetrics dm =getResources().getDisplayMetrics(); w_screen = dm.widthPixels; h_screen = dm.heightPixels; } private void getBitmapArray() { //使用循环遍历目标图片数组 把每一张图片都进行2次采样 for (int i = 0; i < array.length; i++) { BitmapFactory.Options opt = new BitmapFactory.Options(); //该参数是true 代表是获取图片信息 不真实的解码图片 opt.inJustDecodeBounds = true; BitmapFactory.decodeResource(getResources(),array[i],opt); //缩放的比例 要把宽度缩放成屏幕的一般 opt.inSampleSize = opt.outWidth * 2 / w_screen; opt.inJustDecodeBounds = false; Bitmap b = BitmapFactory.decodeResource(getResources(), array[i], opt); imgArray[i] = b; } } private void initRV() { initData(); StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); rv.setLayoutManager(manager); MyRVAdapter adapter = new MyRVAdapter(); rv.setAdapter(adapter); } private void initData() { list = new ArrayList<String>(); for (int i = 0; i < 100; i++) { list.add("position" + i); } } class MyRVAdapter extends RecyclerView.Adapter<MyRVAdapter.MyViewHolder>{ Random r = new Random(); @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(MainActivity.this, R.layout.rv_item, null); MyViewHolder holder = new MyViewHolder(view); return holder; } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(list.get(position)); //因为是模拟显示瀑布流 所有使用随机数的形式来模拟 //真正开发时使用的是网络图片 可以直接使用 网络框架例如 ImageLoader 往ImageView上加在图片 // LinearLayout.LayoutParams param = (LinearLayout.LayoutParams) holder.tv.getLayoutParams(); // param.height = r.nextInt(200) + 50; // holder.tv.setLayoutParams(param); // holder 4000 .tv.setBackgroundResource(array[r.nextInt(2)]); holder.tv.setBackground(new BitmapDrawable(getResources(),imgArray[r.nextInt(2)])); } @Override public int getItemCount() { return list == null ? 0 : list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); } } } }
相关文章推荐
- Android_Bitmap_图片的二次采样并生成缩略图
- Android_Bitmap_图片的二次采样并生成缩略图
- Android_Bitmap_图片的二次采样并生成缩略图
- Android中图片的二次采样示例
- 图片二次采样和按质量压缩
- 图片的二次采样
- 图片的二次采样
- 图片二次采样
- Android 图片二次采样、质量压缩
- 图片的二次采样
- 图片压缩大全及二次采样
- Android开发中图片二次采样(sd卡中图片)
- 图片二次采样以及自定义圆角图片
- 图片的二次采样
- 图片的二次采样Bitmap
- 图片的二次采样,将已有的图片转为圆角或者圆形图片
- 图片二次采样
- 图片二次采样
- 图片的三级缓存和二次采样的工具类
- LRUCache,DiskLrucache,四种引用的区别,以及图片二次采样,三级缓存小知识