我有一个listView与适配器,包含ImageView可变大小(宽度和高度).我需要将Picasso的图片大小调整为布局的最大宽度,并根据图片的宽高比给出可变高度.
我已经检查了这个问题: 用Picasso将图像调整到全宽和固定高度
的fit()作品,但我还没有发现什么,以保持画面的纵横比.
如果我修改适配器布局中的高度,此代码部分工作:
Picasso.with(this.context).load(message_pic_url)
.placeholder(R.drawable.profile_wall_picture)
.fit().centerInside()
.into(holder.message_picture);
Run Code Online (Sandbox Code Playgroud)
但它会在listView的图片之间生成空格,因为图片可能没有那个高度.
提前致谢.
我使用Picasso从磁盘加载图像,例如,Picasso.with(ctx).load(new File("/path/to/image")).into(imageView)但每当我在该文件中保存新图像并刷新我的时候ImageView,Picasso仍然会缓存位图.
是否有可能使Picasso中的缓存无效?
我可以使用Picasso库从文件系统加载图像吗?
我startActivityForResult用来让用户从他的图库中选择一张照片,然后想要显示所选图像.
我已经有了工作代码来获取图像文件系统Uri,但无法使该Picasso.load()方法工作.
请注意问题底部的编辑
我有2个活动:ActivityA,ActivityB与相关frgments: FragmentA,FragmentB 分别.ImageView v在这两个片段之间共享.
一些代码:ActivityA
Intent intent = new Intent(this, ActivityB.class);
final ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.
makeSceneTransitionAnimation(this, imageView, "photo");
ActivityCompat.startActivity(this, intent, activityOptionsCompat.toBundle());
Run Code Online (Sandbox Code Playgroud)
ActivityB
FragmentB fragment = new FragmentB();
getFragmentManager().beginTransaction()..replace(R.id.fragment_container, fragment, TAG).addToBackStack(TAG).commit();
Run Code Online (Sandbox Code Playgroud)
FragmentB
mView = (ImageView) view.findViewById(R.id.view);
ViewCompat.setTransitionName(mView, "photo);
Run Code Online (Sandbox Code Playgroud)
5次中有4次正在工作.但是当它不起作用时,我得到了非常有用的错误:
W/OpenGLRenderer? Layer exceeds max. dimensions supported by the GPU (1080x10659, max=4096x4096)
JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodV called with pending exception 'java.lang.IllegalStateException' thrown in void android.os.MessageQueue.nativePollOnce(long, int):-2
Run Code Online (Sandbox Code Playgroud)
拨电至 …
我已经实现了一个RecyclerView,主要包含通过Picasso加载的图像.我的问题是,只要我向下或向上滚动视图,占位符图像就会显示约.在它被实际图像替换之前的一秒钟.它滚动非常顺利,但几乎无法使用.每次滚动屏幕时都会发生这种情况.
Picasso显然将图像缓存到磁盘,因为它们的加载速度比初始加载时间快,但它们肯定会立即从缓存中重新加载.我做错了什么?
我的适配器代码:
public class ExploreAdapter extends RecyclerView.Adapter<ExploreAdapter.ExploreViewHolder> {
private List<ExploreItem> exploreItemList;
private Context mContext;
private int deviceWidth = PrefUtils.getDeviceWidth();
public ExploreAdapter(Context context, List<ExploreItem> exploreItemList){
this.mContext = context;
this.exploreItemList = exploreItemList;
}
@Override
public int getItemCount(){
return exploreItemList.size();
}
@Override
public void onBindViewHolder(ExploreViewHolder exploreViewHolder, int i){
ExploreItem item = exploreItemList.get(i);
exploreViewHolder.getvTitle().setText(item.getTitle());
exploreViewHolder.getvUsername().setText(item.getUsername());
exploreViewHolder.getvNumLikes().setText(item.getNbOfLikes());
Picasso.with(mContext).load(item.getMediaLocation().trim())
.resize(deviceWidth, deviceWidth)
.centerCrop()
.placeholder(R.drawable.profile_background)
.into(exploreViewHolder.getvImage());
Picasso.with(mContext).load(item.getUserProfilePicUrl().trim())
.placeholder(R.drawable.profile_picture)
.into(exploreViewHolder.getvProfilePic());
}
@Override
public ExploreViewHolder onCreateViewHolder(ViewGroup viewGroup, int i){
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.explore_item, viewGroup, false);
return new …Run Code Online (Sandbox Code Playgroud) java android picasso android-5.0-lollipop android-recyclerview
我正在尝试使用picasso库在mediastore中加载图像存储.当我调用load(imageview,callback)时,毕加索调用onFail而不是onSuccess.我如何知道图像未成功加载的原因?
为什么我应该通过Picasso库下载图像而不是仅使用此代码:
private Bitmap DownloadImage(String URL)
{
Bitmap bitmap = null;
InputStream in = null;
try
{
in = OpenHttpGETConnection(URL);
bitmap = BitmapFactory.decodeStream(in); in.close();
}
catch (Exception e)
{
Log.d("DownloadImage", e.getLocalizedMessage());
}
return bitmap;
}
Run Code Online (Sandbox Code Playgroud)
另一个问题:
毕加索是在UI中还是通过后台线程下载图像?
我想用Picasso在列表视图中一个一个地加载三个连续的图像.使用Picasso提供的方法可以轻松实现.然而,因为这些图像在不同时间加载,所以当图像进入时会引起闪烁效果.例如,有时图像2出现在图像1之前,并且当图像1加载时,它会导致不自然的口吃.如果我可以将listview的可见性设置为不可见,直到可以显示所有图像,那会更好.但是,我没有找到Picasso的回调方法,它会在图像加载时发出信号.
有没有人知道使用Picasso这种情况的解决方案?
谢谢
我正在编写一个Android应用程序,它应该有一个"幻灯片"功能.我发现这个漂亮的图书馆,基于毕加索,完全符合我的要求,而且大多数时候它都运行得很好.
问题是,有时我的图像没有加载到幻灯片中ImageView...它只显示一个"黑色画布",你可以在下面的截图中看到.
我从我的drawables加载本地资源的图像.有时它会在纵向模式下发生,有时在横向模式下发生.我使用哪个图像并不重要,有时会发生"黑度".
编辑:
我正在使用Android 5.0.2和4.4.2 - 它似乎不会发生在4.4.2上.仅在5.0.2.
它发生在带有Android 5.1的Moto X 2014上.
我试图加载的图像在磁盘上有45KB,分辨率为900x445.
我按照建议打开了布局,这些是结果:
它在滚动上保持这样.
有时,它会变成白色而不是黑色(或白色,然后是黑色).
我试过的其他东西:res/drawable当我将文件从该文件夹更改res/drawable-xxxhdpi为5.0.2设备上的滑块时,我的drawables位于文件夹中.跆拳道???
我尝试了不同的图像,在幻灯片上加载多个图像,甚至这个拉取请求将Picasso更改为在lib上滑动.似乎没有任何作用,错误似乎是随机的.
一旦我尝试使用来自网络的URL而不是本地存储上的实际drawable,它就可以工作了.与完全相同的图像.
这是我加载图像的方式:
Fragment.java
private SliderLayout slider;
private PagerIndicator indicator;
// ...
private void setupSlider() {
HashMap<String,Integer> file_maps = new HashMap<>();
file_maps.put("Blah",R.drawable.banner_1);
file_maps.put("Bleh",R.drawable.banner_2);
file_maps.put("Blih",R.drawable.banner_3);
file_maps.put("Bloh",R.drawable.banner_4);
for (String name : file_maps.keySet()) {
DefaultSliderView dsv = new DefaultSliderView(getActivity());
dsv.description(name)
.image(file_maps.get(name))
.error(R.drawable.banner_error)
.empty(R.drawable.empty)
.setScaleType(BaseSliderView.ScaleType.Fit)
.setOnSliderClickListener(this);
//add your extra information
dsv.bundle(new Bundle());
dsv.getBundle()
.putString("extra",name); …Run Code Online (Sandbox Code Playgroud) 我在Android应用程序中遇到一个问题,我正在尝试检查已经存在的应用程序,该应用程序包含
implementation('com.squareup.picasso:picasso:3.0.0-SNAPSHOT') {
exclude group: 'com.android.support'
}
Run Code Online (Sandbox Code Playgroud)
毕加索图书馆和
在类中使用该库,这是代码
import com.squareup.picasso.Picasso;
Picasso.with().load(url).placeholder(R.drawable.default_pic).into(imageView);
Run Code Online (Sandbox Code Playgroud)
这是错误, Error:(49, 20) error: cannot find symbol method with()
而我的android studio版本是3.0 RC1,这是一个问题吗?