这个问题是关于这个流行的Android库,Android的通用图像加载器:https://github.com/nostra13/Android-Universal-Image-Loader
图片网址:http://i10.topit.me/l046/10046137034b1c0db0.jpg
回溯:
01-14 00:24:42.125:
ERROR/ImageLoader(1671): http://i10.topit.me/l046/10046137034b1c0db0.jpg
java.io.FileNotFoundException: http://i10.topit.me/l046/10046137034b1c0db0.jpg
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
at com.nostra13.universalimageloader.core.download.URLConnectionImageDownloader.getStreamFromNetwork(URLConnectionImageDownloader.java:40)
at com.nostra13.universalimageloader.core.download.ImageDownloader.getStream(ImageDownloader.java:27)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.saveImageOnDisc(LoadAndDisplayImageTask.java:296)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:204)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:128)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
Run Code Online (Sandbox Code Playgroud)
请帮忙.
我有一个宽度为:match_parent和height:wrap_content的imageView.我希望图像具有全宽并保持高度的比例.
我按照这个链接(https://github.com/nostra13/Android-Universal-Image-Loader/pull/62)说谁在我的imageView上设置adjustviewbounds和center_crop并将imageScaleType设置为ImageScaleType.EXACTLY_STRETCHED.
所以我这样做:
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.cacheInMemory()
.cacheOnDisc()
.showImageForEmptyUri(R.drawable.cache_waiting)
.showImageOnFail(R.drawable.cache_waiting)
.showStubImage(R.drawable.cache_waiting)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.build();
setAdjustViewBounds(true);
setScaleType(ScaleType.CENTER_CROP);
ImageLoader.getInstance().displayImage(img.getUrl(), this,defaultOptions);
Run Code Online (Sandbox Code Playgroud)
使用此代码,大多数ImageView都是白色的.logcat告诉我位图太大(2560,1120).如何保持图像与UIL的比例.
谢谢,
我在我的应用程序中使用FragmentActivity和几个片段.这些片段中的每一个都包含图像和一些带动画的文本.当用户在屏幕上滑动时,片段会发生变化.
现在我已经开始研究10天了,并且已经在不同设备上使用不同的Android版本测试了FragmentActivity.我过去10天坚持这个原因的原因是我遇到了崩溃
Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 27830 (ple.myfragexample)
Run Code Online (Sandbox Code Playgroud)
现在,只有当我在Android 4.1.2上测试FragmentActivity时才会出现此错误.它可以在Android 2.3.3,4.0.3,4.0.4,4.2甚至2.2上正常运行.错误日志如下:
08-07 14:34:13.843: D/dalvikvm(27830): GC_FOR_ALLOC freed 3845K, 14% free 35407K/40903K, paused 4ms, total 14ms
08-07 14:34:13.848: I/dalvikvm-heap(27830): Grow heap (frag case) to 39.590MB for 3932176-byte allocation
08-07 14:34:13.878: D/dalvikvm(27830): GC_CONCURRENT freed 3K, 5% free 39244K/40903K, paused 11ms+4ms, total 30ms
08-07 14:34:13.928: D/dalvikvm(27830): GC_FOR_ALLOC freed 0K, 5% free 39244K/40903K, paused 16ms, total 16ms
08-07 14:34:13.928: I/dalvikvm-heap(27830): Forcing collection of SoftReferences for 8847376-byte allocation
08-07 14:34:13.953: D/dalvikvm(27830): GC_BEFORE_OOM …Run Code Online (Sandbox Code Playgroud) android out-of-memory android-fragments universal-image-loader android-4.2-jelly-bean
我想在ImagePagerActivity中使用ImageViewZoom和Universal Image Loader.
我可以缩放图像,滑动到下一个图像.但是当图像处于变焦位置时,我正面临问题.

如果图像被缩放并且我处于中心位置,如果我想要看到同一图像的右侧部分并向左滑动它将转到下一个图像.请帮我这样做.
这是我的XML代码:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="1dip" >
<it.sephiroth.android.library.imagezoom.ImageViewTouch
android:layout_weight="1"
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter" />
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢NOSTRA,现在我可以用下面的代码控制缩放和滑动.但多点触控变焦的问题.我无法用两根手指进行缩放.
这是我以前的代码(用两根手指正常工作):
public class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale( ScaleGestureDetector detector ) {
Log.d( LOG_TAG, "onScale" );
float span = detector.getCurrentSpan() - detector.getPreviousSpan();
float targetScale = mCurrentScaleFactor * detector.getScaleFactor();
if ( mScaleEnabled ) {
targetScale = Math.min( getMaxZoom(), Math.max( targetScale, getMinZoom()-0.1f ) );
zoomTo( targetScale, detector.getFocusX(), detector.getFocusY() );
mCurrentScaleFactor …Run Code Online (Sandbox Code Playgroud) 这是一个从json获取图像的gridview.它工作正常.我想在此gridview中单击图像以显示完整图像并可以滑动它.我发现这个问题的解决方案是使用Viewpager.
如何在gridview中单击图像以显示图像并可以滑动?
您可以更轻松地阅读此代码.http://pastebin.com/Q8Ljt9yL

public class MainActivity extends Activity {
public static final int DIALOG_DOWNLOAD_JSON_PROGRESS = 0;
private ProgressDialog mProgressDialog;
ArrayList<HashMap<String, Object>> MyArrList;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Permission StrictMode
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
// Download JSON File
new DownloadJSONFileAsync().execute();
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_JSON_PROGRESS:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Downloading.....");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setCancelable(true);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
} …Run Code Online (Sandbox Code Playgroud) android json gridview android-viewpager universal-image-loader
我正在使用通用图像加载器从网络上"懒加载"我的图像.是否可以使用淡入淡出的动画,但淡入"从黑色"而不是"从白色"?我的应用程序有黑色背景,我希望它能顺利淡化它,而不是"闪光",因为当前效果看起来像.
这是从白色淡化的代码
DisplayImageOptions options;
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.no_poster)
.showImageForEmptyUri(R.drawable.no_poster)
.showImageOnFail(R.drawable.no_poster)
.displayer(new FadeInBitmapDisplayer(500))
.cacheInMemory(true)
.cacheOnDisc(true)
.build();
ImageView myPosterView = (ImageView)findViewById(R.id.movieposterlarge);
imageLoader.displayImage(movie_poster, myPosterView,options);
Run Code Online (Sandbox Code Playgroud) 在我的Android项目我显示所有图像web service(Url),以ListView用于这个目的,我已经使用Universal image loader.如果我向下滚动然后向上滚动,则在List中加载一些图像后,已经加载的图像将再次重新加载.
DisplayImageOptions.Builder displayImageOptionsBuilder = new DisplayImageOptions
.Builder().cacheOnDisk(true).cacheInMemory(true).considerExifParams(true);
ImageLoader.getInstance().displayImage(imageUri, imageView,
displayImageOptionsBuilder.build());
Run Code Online (Sandbox Code Playgroud)
我尝试了什么
ImageAware imageAware = new ImageViewAware(imageView, false);
ImageLoader.getInstance().displayImage(imageUri, imageAware,displayImageOptionsBuilder.build());
Run Code Online (Sandbox Code Playgroud)
即使使用此代码,它也不会在ListView中进行任何更改 reloading
编辑
适配器类
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final String name = getItem(position);
View view = convertView;
if (view == null) {
view = createView();
ViewHolder viewHolder = new ViewHolder();
viewHolder.image = (ImageView) view.findViewById(R.id.capsule_media_list_item_thumbnail_1);
view.setTag(viewHolder);
}
ImageHelper.initImage(viewHolder.image,
imageUrl,
R.drawable.vx_loading, loadingImageResource,displayOptionsCustomizer);
return view;
}
private final DisplayOptionsCustomizer …Run Code Online (Sandbox Code Playgroud) 我正在使用UIL(由Nosotra)下载服务器渲染的图像,并且服务器最多需要50秒来创建每个图像.服务器的超时设置为15秒,因此我们创建了一个在ImageDownloader.getStream()方法中实现的轮询机制.下载后,图像将显示在ViewPager中(android.support.v4.view.ViewPager就像样本一样).
当用户导航到其他页面时,我希望在不下载文件的情况下停止轮询,但似乎没有" 好 "方法来打破下载流程.
getStream伪代码
1. Parse custom-style URI ("asdf://mypng|123455678945643563245");
2. Make a real world URL from it.
3. Poll the server for the image url (causes the server to render - could take up to 1m30s).
4. Get the stream from the URL, return the stream to caller.
Example Code: InputStream is = (InputStream) url.getContent();
Run Code Online (Sandbox Code Playgroud)
到目前为止尝试了什么
null从我的getStream方法返回会导致NullPointerException抛出,所以它与抛出异常基本相同.
抛出异常时,图像会停止,但是:
OutOfMemoryError,所以我在屏幕上显示错误.我不应该得到错误.我已经尝试过这个SO问题的清单 …我是滑翔新手,想要将我的应用程序从universalimageloader迁移到滑行.我想将缓存的图像从磁盘转换为图像文件,并将其显示到ImageView中.
当我使用universalimageloader时,我可以通过这种方式轻松完成:
File imageFile = DiskCacheUtils.findInCache(image_url, ImageLoader.getInstance().getDiscCache());
//then show it into image view
String file_target = "file://"+imageFile.getPath();
ImageLoader.getInstance().displayImage(target, imageView);
Run Code Online (Sandbox Code Playgroud)
但是我没有从文档中找到一种方法在Glide中做到这一点.
可能吗?
我使用UniversalImageLoader(displayImage方法)加载图像
但它抛出NoSuchFieldException异常:
Landroid/widget/ImageView 类中没有字段 mMaxWidth;('android.widget.ImageView' 的声明出现在 /system/framework/framework.jar!classes3.dex 中)
怎么修 ?