【问题标题】:Picasso load images from expansion filePicasso 从扩展文件加载图像
【发布时间】:2016-06-30 17:25:39
【问题描述】:

在我的 Android 应用程序中,我想使用 Picasso 在 GridView 中显示图像。所有图像都在我的扩展(obb)文件中。我可以通过 InputStream 从扩展文件中获取可绘制对象,但我不知道如何使用 Picasso 加载它们。到目前为止我的代码:

public class Tab3 extends Fragment {

public com.android.vending.expansion.zipfile.ZipResourceFile expansionFile;
public String[] photoID;
public Integer photoNumberOf;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tab_3, container, false);
    GridView gridView = (GridView) view.findViewById(R.id.photogridview);
    gridView.setAdapter(new ImageAdapter(view.getContext())); // uses the view to get the context instead of getActivity().
    return view;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    SharedPreferences settings = getActivity().getSharedPreferences("FILTER_PREFS", Context.MODE_PRIVATE);
    String photoString = settings.getString("DESC_MainPhoto", null);
    photoID = photoString.split(",");
    photoNumberOf = photoID.length;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

private class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context context) {
        mContext = context;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView,
                        ViewGroup parent) {
        ImageView imageView;

        if (convertView == null) {

            imageView = new ImageView(mContext);
        } else {

            imageView = (ImageView) convertView;
        }

        Display display = getActivity().getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;


        try {
            expansionFile = com.android.vending.expansion.zipfile.APKExpansionSupport.getAPKExpansionZipFile(getActivity(), 2, 0);
            InputStream fileStream = expansionFile.getInputStream(photoID[position] + ".jpg");
            Drawable drawable = Drawable.createFromStream(fileStream, null);

        } catch (IOException e) {
        }


        Picasso.with(getContext())
                .load(???????????????????????????????)
                .resize(width, 0)

                .into(imageView);
        return imageView;
    }
}

【问题讨论】:

    标签: android gridview picasso expansion


    【解决方案1】:

    Picasso 提供了 3 种加载图片的方法。

    Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);        
    Picasso.with(context).load(new File(...)).into(imageView3);
    Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
    

    当您知道文件位置时,您可以使用第二种方法。

    【讨论】:

    • 听起来不错,但是 obb 文件中 jpg 的文件位置格式是什么?
    【解决方案2】:

    使用毕加索的File方法

    Picasso.with(getContext())
                    .load(new File(path))
                    .resize(width, 0)
                    .into(imageView);
    

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 2016-07-29
      • 1970-01-01
      • 2020-03-16
      • 2020-08-03
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多