2015-10-11 7 views
0

В моем приложении я могу загружать все изображения с сервера (используя библиотеку волейбола) и показывать в виде сетки.Android - TouchImageView Полноценный выпуск

См вида сетки: enter image description here

, но когда я нажимаю на конкретном элементе (Изображение) из галереи он не смог показать в поле зрения, но все работает отлично, как масштабирование, масштабирование и салфетка и т.д ..

Это мой TouchImageView.java код

FullScreenImageAdapter.java:

import android.app.Activity; 
    import android.content.Context; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.support.v4.view.PagerAdapter; 
    import android.support.v4.view.ViewPager; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.Button; 
    import android.widget.RelativeLayout; 

    import com.android.volley.toolbox.ImageLoader; 


    public class FullScreenImageAdapter extends PagerAdapter { 

     private Activity _activity; 
     private ArrayList<String> _imagePaths; 
     private LayoutInflater inflater; 

     // constructor 
     public FullScreenImageAdapter(Activity activity, ArrayList<String> imagePaths) { 
      this._activity = activity; 
      this._imagePaths = imagePaths; 
     } 

     @Override 
     public int getCount() { 
      return this._imagePaths.size(); 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return view == ((RelativeLayout) object); 
     } 

     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      TouchImageView imgDisplay; 
      Button btnClose; 

      inflater = (LayoutInflater) _activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container, false); 

      imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay); 
      btnClose = (Button) viewLayout.findViewById(R.id.btnClose); 

      BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
      options.inJustDecodeBounds = true; 
      options.inSampleSize = 4; 

      // Bitmap bitmap = BitmapFactory.decodeFile(_imagePaths.get(position), 
      // options); 
      // imgDisplay.setImageBitmap(bitmap); 

      // Loading image with placeholder and error image 
      ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
      String path = _imagePaths.get(position); 
      imageLoader.get(path, ImageLoader.getImageListener(imgDisplay, R.drawable.ic_launcher, R.drawable.logo_final)); 

      // close button click event 
      btnClose.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        _activity.finish(); 
       } 
      }); 

      ((ViewPager) container).addView(viewLayout); 

      return viewLayout; 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      ((ViewPager) container).removeView((RelativeLayout) object); 

     } 

    } 

FullScreenViewActivity.java:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

public class FullScreenViewActivity extends Activity { 

    // private Utils utils; 
    private FullScreenImageAdapter adapter; 
    private ViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fullscreen_view); 

     viewPager = (ViewPager) findViewById(R.id.pager); 

     // utils = new Utils(getApplicationContext()); 

     Intent i = getIntent(); 
     int position = i.getIntExtra("position", 0); 
     ArrayList<String> imagePaths = i.getExtras().getStringArrayList("imagePaths"); 

     adapter = new FullScreenImageAdapter(FullScreenViewActivity.this, imagePaths); 

     viewPager.setAdapter(adapter); 

     // displaying selected image first 
     viewPager.setCurrentItem(position); 
    } 
} 

activity_fullscreen_view.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <com.example.test.adapter.ExtendedViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

layout_fullscreen_image.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <com.example.test.util.TouchImageView 
     android:id="@+id/imgDisplay" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/splash_screen_final" /> 

    <Button 
     android:id="@+id/btnClose" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:background="@drawable/button_background" 
     android:paddingBottom="2dp" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:paddingTop="2dp" 
     android:text="@string/close" 
     android:textColor="#ffffff" /> 

</RelativeLayout> 

ExtendedViewPager.java:

import android.content.Context; 
import android.support.v4.view.ViewPager; 
import android.util.AttributeSet; 
import android.view.View; 


public class ExtendedViewPager extends ViewPager { 

    public ExtendedViewPager(Context context) { 
     super(context); 
    } 

    public ExtendedViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { 
     if (v instanceof TouchImageView) { 
      // 
      // canScrollHorizontally is not supported for Api < 14. To get around this issue, 
      // ViewPager is extended and canScrollHorizontallyFroyo, a wrapper around 
      // canScrollHorizontally supporting Api >= 8, is called. 
      // 
      return ((TouchImageView) v).canScrollHorizontallyFroyo(-dx); 

     } else { 
      return super.canScroll(v, checkV, dx, x, y); 
     } 
    } 

} 

touchimageview: enter image description here

Любое предложение может быть оценено .. Заранее спасибо ..

+0

Я думаю, что в layout_fullscreen_image.xml layout_height установлен в wrap_content попробовать использовать fill_parent – Rajesh

+0

Да братан пытался, но нет use..thanks для вашего предложения .. –

+0

Любые предложения, пожалуйста ..? –

ответ

0

Здесь проблема с кодировкой URL, наконец, я получил решение.

Я только что добавил эту строку перед отправкой imagePaths в FullScreenViewActivity, чтобы заставить ее работать.

imagePathsString.add (uri.toString());