2015-01-25 3 views
5

Ich verwende Picasso Bibliothek in meinem aktuellen Projekt http://square.github.io/picasso/. Alles funktioniert gut, aber ich kann einfach nicht herausfinden, wie Pinch Zoom für alle Bilder implementiert werden soll, die von URL geladen werden. Um ehrlich zu sein, weiß ich nicht einmal, wo ich die onClickListener platzieren soll. Meine Anwendung haben mehrere Fragmente und jeder von ihnen haben 2 Tabs, erste Tab eine ListView hat und die zweite tab hat einige in einem GridView angezeigten Bilder:Wie Pinch Zoom in Picasso-Bibliothek zu implementieren?

Bmw.java

public class Bmw2 extends Fragment { 

    @Override 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(com.zenyt.R.layout.bmw2, container, false); 

     GridView gv = (GridView) rootView.findViewById(R.id.grid_view); 
     gv.setAdapter(new com.zenyt.SampleGridViewAdapter(getActivity())); 
     gv.setOnScrollListener(new SampleScrollListener(getActivity())); 


     return rootView; 
    } 

SampleGridViewAdapter

public final class SampleGridViewAdapter extends BaseAdapter { 
    private final Context context; 
    private final List<String> urls = new ArrayList<String>(); 

    public SampleGridViewAdapter(Context context) { 
     this.context = context; 

     // Ensure we get a different ordering of images on each run. 
     Collections.addAll(urls, Data.URLS); 
     Collections.shuffle(urls); 

    } 

    @Override public View getView(int position, View convertView, ViewGroup parent) { 
     SquaredImageView view = (SquaredImageView) convertView; 
     if (view == null) { 
      view = new SquaredImageView(context); 
      view.setScaleType(CENTER_CROP); 
     } 

     // Get the image URL for the current position. 
     String url = getItem(position); 

     // Trigger the download of the URL asynchronously into the image view. 
     Picasso.with(context) // 
       .load(url) // 
       .placeholder(R.drawable.placeholder) // 
       .error(R.drawable.error) // 
       .fit() // 
       .tag(context) // 
       .into(view); 

     return view; 
    } 

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

    @Override public String getItem(int position) { 
     return urls.get(position); 
    } 

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

Daten.java

final class Data { 
    static final String BASE = "http://www.hdcarwallpapers.com/walls/"; 
    static final String BASE2 = "http://www3.cellsea.com//content/wallpaper/"; 
    static final String EXT = ".jpg"; 
    static final String[] URLS = { 
      BASE + "prior_design_audi_r8_gt850-wide" + EXT, 
      BASE + "2015_audi_rs6_avant_exclusive-wide" + EXT, 
      BASE + "2015_audi_tt_coupe_quattro-wide" + EXT, 
      BASE + "2015_audi_tt_coupe_quattro-wide" + EXT, 
      BASE + "2014_audi_prologue_concept_4-wide" + EXT, 
      BASE2 + "2010/WP4ce483c6efa9d" + EXT, 

    }; 

    private Data() { 
     // No instances. 
    } 
} 

Entschuldigung für mein Englisch.

Antwort

7

Picasso-Bibliothek wird nur verwendet, um die Bilder aus dem Netzwerk zu laden.

Sie müssen Ihre Anfrage mit einer anderen Bibliothek bearbeiten, z. B. PhotoView oder einer anderen, die Aktionen auf Bildern unterstützt.

+0

Ich habe stundenlang versucht, PhotoView in meinem Projekt zu implementieren, aber ohne Erfolg. Es ist nicht so einfach wie für Picasso (kopiere das Glas) und fertig. Kannst du mir ein wenig helfen? – Alec

+0

BEARBEITEN. Ich habe PhotoView library-1.2.3 gefunden und es zu meinem Projekt hinzugefügt. Ich experimentiere gerade damit, ich erhalte immer einen Fehler, wenn ich das Image 'java.lang.ArrayIndexOutOfBoundsException: length = 1; index = 1' – Alec

+0

Ich weiß, es ist ein alter Beitrag, aber Sie können versuchen, https://github.com/davemorrissey/subsampling-scale-image-view verwenden – Avijeet

2
PhotoViewAttacher photoViewAttacher; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    ImageView imageView = (ImageView) findViewById(R.id.imageView); 

    Picasso.with(this) 
      .load("http://easyway-ev.xyz/images/1.png") 
      .into(imageView);//Regular 
    photoViewAttacher = new PhotoViewAttacher(imageView);} 

dies meine Antwort ist, nehme ich Picasso, und nachdem ich verwendet Photoview, auch dieses Video, wie Sync-Photoview enter link description here ich diese Hilfe hoffen, dass Sie!

Verwandte Themen