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