Android:不显示带有UIL和TouchImageView的ImageView
我正试图用Android:不显示带有UIL和TouchImageView的ImageView,android,url,imageview,zooming,Android,Url,Imageview,Zooming,我正试图用通用图像加载器和触摸图像视图Mike Ortiz实现从URL加载图像。但当试图查看图像时,会显示黑屏。我已经检查了URL是否正确。如果我在那里看到文本视图 我做错了什么 ImagePageActivity.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_
通用图像加载器和触摸图像视图Mike Ortiz
实现从URL
加载图像。但当试图查看图像时,会显示黑屏。我已经检查了URL是否正确。如果我在那里看到文本视图
我做错了什么
ImagePageActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_fullscreen_view);
Bundle bundle = getIntent().getExtras();
assert bundle != null;
String[] imageUrls = bundle.getStringArray("urls");
int pagerPosition = bundle.getInt("pos", 0);
tipo = bundle.getString("tipo");
monumento = bundle.getString("monumento");
num = bundle.getInt("num");
for(int i = 0; i < imageUrls.length; i++) {
// URLS with data
Toast.makeText(this, "URL = " + imageUrls[i], 0).show();
}
if (savedInstanceState != null) {
pagerPosition = savedInstanceState.getInt(STATE_POSITION);
}
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.imagen)
.showImageOnFail(R.drawable.imagen)
.resetViewBeforeLoading(true)
.cacheOnDisc(true)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(true)
.displayer(new FadeInBitmapDisplayer(300))
.build();
pager = (ExtendedViewPager) findViewById(R.id.pager);
pager.setAdapter(new ImagePagerAdapter(imageUrls));
pager.setCurrentItem(pagerPosition);
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE_POSITION, pager.getCurrentItem());
}
private class ImagePagerAdapter extends PagerAdapter {
private String[] images;
private LayoutInflater inflater;
ImagePagerAdapter(String[] images) {
this.images = images;
inflater = getLayoutInflater();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
final View imageLayout = inflater.inflate(R.layout.ampliar_imagen, view, false);
assert imageLayout != null;
imageView = (TouchImageView) imageLayout.findViewById(R.id.imagenFullScreen);
infoImagen = (LinearLayout)imageLayout.findViewById(R.id.textoInfoImagen);
info = (TextView) imageLayout.findViewById(R.id.textoInfoImagenDesc);
cargarInfo(position, images);
android.graphics.PorterDuff.Mode.MULTIPLY);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout infoImagen = (LinearLayout)imageLayout.findViewById(R.id.textoInfoImagen);
if(infoImagen.getVisibility() == View.GONE) {
infoImagen.setVisibility(View.VISIBLE);
} else {
infoImagen.setVisibility(View.GONE);
}
}
});
imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
spinner.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
spinner.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
}
});
view.addView(imageLayout, 0);
return imageLayout;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
@Override
public Parcelable saveState() {
return null;
}
}
private void cargarInfo(int position, String[] images) {
if(tipo.equals("fotos")) {
info.setText((position + 1) + " de " + images.length +
"\n" + InfoImagenes.devolverInfoFotos(monumento, position, num, ImagePagerActivity.this));
}
else if(tipo.equals("planos")) {
info.setText((position + 1) + " de " + images.length +
"\n" + InfoImagenes.devolverInfoPlanos(position, num, ImagePagerActivity.this));
}
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE\u NO\u TITLE);
setContentView(R.layout.activity\u全屏视图);
Bundle Bundle=getIntent().getExtras();
断言包!=null;
String[]imageUrls=bundle.getStringArray(“URL”);
int pagerPosition=bundle.getInt(“pos”,0);
tipo=bundle.getString(“tipo”);
montero=bundle.getString(“montero”);
num=bundle.getInt(“num”);
for(int i=0;i
活动\u全屏.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<imagenes.ExtendedViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/negro" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<imagenes.TouchImageView
android:id="@+id/imagenFullScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:adjustViewBounds="true" />
<ProgressBar
android:id="@+id/cargandoFoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</FrameLayout>
<LinearLayout
android:id="@+id/textoInfoImagen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/grisTransparente"
android:orientation="horizontal"
android:visibility="visible" >
<TextView
android:id="@+id/textoInfoImagenDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:paddingBottom="3dp"
android:paddingTop="3dp"
android:textColor="@color/blanco"
android:textSize="13sp" />
</LinearLayout>
</RelativeLayout>
ampliar\u imagen.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<imagenes.ExtendedViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/negro" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<imagenes.TouchImageView
android:id="@+id/imagenFullScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:adjustViewBounds="true" />
<ProgressBar
android:id="@+id/cargandoFoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</FrameLayout>
<LinearLayout
android:id="@+id/textoInfoImagen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/grisTransparente"
android:orientation="horizontal"
android:visibility="visible" >
<TextView
android:id="@+id/textoInfoImagenDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:paddingBottom="3dp"
android:paddingTop="3dp"
android:textColor="@color/blanco"
android:textSize="13sp" />
</LinearLayout>
</RelativeLayout>
编辑
如果我按ImageView更改TouchImageView,它会显示图像您可以编辑它,它会在tab2中运行,但其他设备不会,我不知道为什么
private void sharedConstructing(Context context) {
super.setClickable(true);
this.context = context;
ScaleListener scaleListner = new ScaleListener(); //Added
mScaleDetector = new ScaleGestureDetector(context, scaleListner); //Edited
mGestureDetector = new GestureDetector(context, new GestureListener());
matrix = new Matrix();
prevMatrix = new Matrix();
m = new float[9];
normalizedScale = 1;
if (mScaleType == null) {
mScaleType = ScaleType.FIT_CENTER;
}
minScale = 1;
maxScale = 3;
superMinScale = SUPER_MIN_MULTIPLIER * minScale;
superMaxScale = SUPER_MAX_MULTIPLIER * maxScale;
setImageMatrix(matrix);
setScaleType(ScaleType.MATRIX);
setState(State.NONE);
onDrawReady = false;
scaleListner.onScale(mScaleDetector);//Added
super.setOnTouchListener(new PrivateOnTouchListener());
}
或者你换成,它会帮你展示形象,祝你好运
ImageLoader.getInstance().displayImage(urlDownload, mImageView, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
// TODO Auto-generated method stub
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
// TODO Auto-generated method stub
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// TODO Auto-generated method stub
Log.v(TAG, "Bitmap What "+loadedImage.getWidth()+ " "+loadedImage.getHeight());
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
// TODO Auto-generated method stub
}
});
我也遇到了这个问题,我发现它与ProgressBar
的可见性有关,下面的代码可以用来解决这个问题
- 在
onLoadingStarted()
中,添加view.setVisibility(view.GONE)
- 在
onLoadingComplete()
中,添加view.setVisibility(view.VISIBLE)
代码:
imageLoader.displayImage(imageUri.toString(),
mPictureView,
options,
new SimpleImageLoadingListener()
{
@Override
public void onLoadingStarted(String imageUri, View view)
{
spinner.setVisibility(View.VISIBLE);
view.setVisibility(View.GONE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason)
{
spinner.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
{
spinner.setVisibility(View.GONE);
view.setVisibility(View.VISIBLE);
}
});
我也有同样的问题。我通过重置缩放暂时解决了这个问题
touchImage.setZoom(1);
内部onLoadComplete()
当然,touchImage是您的TouchImageView对象。如果将imageView位图设置为异步,我发现矩阵为{0,0,0}{0,0,0}{0,0,1},因此无法显示图像。。当imageView第一次具有空的可绘制完成度量值时,TouchImageView。