Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions picasso-sample/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,12 @@
</intent-filter>
</activity>


<activity android:name=".SampleGridViewScrollingActivity" android:label="@string/view_pager_activity"/>
<activity android:name=".SampleContactsActivity"/>
<activity android:name=".SampleGalleryActivity"/>
<activity android:name=".SampleListDetailActivity"/>
<activity android:name=".SampleListDetailScrollingActivity"/>

<receiver android:name="SampleWidgetProvider">
<intent-filter>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

25 changes: 25 additions & 0 deletions picasso-sample/res/layout/sample_gridview_fragment_scrolling.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: extra line

<GridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="@integer/column_count"
android:scrollbarStyle="insideOverlay"
android:scrollbars="none"
android:listSelector="@null"
/>

<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="toggle Skip memory cache"
android:id="@+id/skipMemoryCacheButton"
android:layout_gravity="right|bottom"
/>

</FrameLayout>
23 changes: 23 additions & 0 deletions picasso-sample/res/layout/sample_list_detail_list_scrolling.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/faux_action_bar_size"
android:clipToPadding="false"
/>

<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="toggle Skip memory cache"
android:id="@+id/skipMemoryCacheButton"
android:layout_gravity="right|bottom"
/>

</FrameLayout>
1 change: 1 addition & 0 deletions picasso-sample/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@
image.\n\nTo enable this functionality on pre-ICS use a standalone HTTP client with caching such
as OkHttp.
</string>
<string name="view_pager_activity">ViewPager and Scrolling</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,44 @@
final class PicassoSampleAdapter extends BaseAdapter {

private static final int NOTIFICATION_ID = 666;
private final LayoutInflater inflater;

public PicassoSampleAdapter(Context context) {
inflater = LayoutInflater.from(context);
}

@Override public int getCount() {
return Sample.values().length;
}

@Override public Sample getItem(int position) {
return Sample.values()[position];
}

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

@Override public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) convertView;
if (view == null) {
view = (TextView) inflater.inflate(R.layout.picasso_sample_activity_item, parent, false);
}

view.setText(getItem(position).name);

return view;
}

enum Sample {
GRID_VIEW("Image Grid View", SampleGridViewActivity.class),
GRID_VIEW_SCROLLING("View Pager with Image Grid View and ScrollListener",
SampleGridViewScrollingActivity.class),
GALLERY("Load from Gallery", SampleGalleryActivity.class),
CONTACTS("Contact Photos", SampleContactsActivity.class),
LIST_DETAIL("List / Detail View", SampleListDetailActivity.class),
LIST_DETAIL_SCROLLING("List / Detail with ScrollListener",
SampleListDetailScrollingActivity.class),
SHOW_NOTIFICATION("Sample Notification", null) {
@Override public void launch(Activity activity) {
RemoteViews remoteViews =
Expand Down Expand Up @@ -70,33 +102,4 @@ public void launch(Activity activity) {
activity.finish();
}
}

private final LayoutInflater inflater;

public PicassoSampleAdapter(Context context) {
inflater = LayoutInflater.from(context);
}

@Override public int getCount() {
return Sample.values().length;
}

@Override public Sample getItem(int position) {
return Sample.values()[position];
}

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

@Override public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) convertView;
if (view == null) {
view = (TextView) inflater.inflate(R.layout.picasso_sample_activity_item, parent, false);
}

view.setText(getItem(position).name);

return view;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ public class SampleGridViewActivity extends PicassoSampleActivity {
setContentView(R.layout.sample_gridview_activity);

GridView gv = (GridView) findViewById(R.id.grid_view);
gv.setAdapter(new SampleGridViewAdapter(this));
gv.setAdapter(new SampleGridViewAdapter(this, false));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand All @@ -14,11 +15,11 @@
final class SampleGridViewAdapter extends BaseAdapter {
private final Context context;
private final List<String> urls = new ArrayList<String>();
private boolean skipMemoryCache;

public SampleGridViewAdapter(Context context) {
public SampleGridViewAdapter(Context context, boolean skipMemoryCache) {
this.context = context;

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

Expand All @@ -39,12 +40,17 @@ public SampleGridViewAdapter(Context context) {
String url = getItem(position);

// Trigger the download of the URL asynchronously into the image view.
Picasso.with(context) //

RequestCreator creator = Picasso.with(context) //
.load(url) //
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.fit() //
.into(view);
.fit();

if (skipMemoryCache) {
creator.skipMemoryCache();
}
creator.into(view);

return view;
}
Expand All @@ -60,4 +66,9 @@ public SampleGridViewAdapter(Context context) {
@Override public long getItemId(int position) {
return position;
}

public boolean toggleSkipMemoryCache() {
this.skipMemoryCache = !this.skipMemoryCache;
return this.skipMemoryCache;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.example.picasso;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
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.GridView;
import android.widget.Toast;
import com.squareup.picasso.scrolling.PicassoScrollListener;

public class SampleGridViewScrollingActivity extends PicassoSampleActivity {

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

ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(new GridFragmentAdapter(getSupportFragmentManager()));
viewPager.setPageMargin(30);

Toast.makeText(this,
"ViewPager with GridView\n"
+ "Fades loaded images only if GridView is NOT scrolling and NOT flinging",
Toast.LENGTH_SHORT).show();
}

public static class GridFragmentAdapter extends FragmentPagerAdapter {

public GridFragmentAdapter(FragmentManager fm) {
super(fm);
}

@Override public Fragment getItem(int position) {
return new GridFragment();
}

@Override public int getCount() {
return 10;
}
}

public static class GridFragment extends Fragment {

private Button skipMemoryCacheButton;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.sample_gridview_fragment_scrolling, container, false);

boolean skipMemory = true;

GridView gv = (GridView) v.findViewById(R.id.grid_view);
final SampleGridViewAdapter adapter = new SampleGridViewAdapter(getActivity(), skipMemory);
gv.setAdapter(adapter);
gv.setOnScrollListener(new PicassoScrollListener(getActivity()));
skipMemoryCacheButton = (Button) v.findViewById(R.id.skipMemoryCacheButton);
updateButton(skipMemory);
skipMemoryCacheButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean skip = adapter.toggleSkipMemoryCache();
updateButton(skip);
}
});

return v;
}

private void updateButton(boolean skip) {
skipMemoryCacheButton.setText("skip memory cache = " + skip);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

public class SampleListDetailActivity extends PicassoSampleActivity {
Expand Down Expand Up @@ -38,7 +39,7 @@ public static ListFragment newInstance() {
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final SampleListDetailActivity activity = (SampleListDetailActivity) getActivity();
final SampleListDetailAdapter adapter = new SampleListDetailAdapter(activity);
final SampleListDetailAdapter adapter = new SampleListDetailAdapter(activity, false);

ListView listView = (ListView) LayoutInflater.from(activity)
.inflate(R.layout.sample_list_detail_list, container, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,19 @@
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

final class SampleListDetailAdapter extends BaseAdapter {
private final Context context;
private final List<String> urls = new ArrayList<String>();
private boolean skipMemoryCache;

public SampleListDetailAdapter(Context context) {
public SampleListDetailAdapter(Context context, boolean skipMemoryCache) {
this.context = context;
this.skipMemoryCache = skipMemoryCache;
Collections.addAll(urls, Data.URLS);
}

Expand All @@ -39,13 +42,17 @@ public SampleListDetailAdapter(Context context) {
holder.text.setText(url);

// Trigger the download of the URL asynchronously into the image view.
Picasso.with(context)
RequestCreator creator = Picasso.with(context)
.load(url)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.resizeDimen(R.dimen.list_detail_image_size, R.dimen.list_detail_image_size)
.centerInside()
.into(holder.image);
.centerInside();

if (skipMemoryCache) {
creator.skipMemoryCache();
}
creator.into(holder.image);

return view;
}
Expand All @@ -62,6 +69,11 @@ public SampleListDetailAdapter(Context context) {
return position;
}

public boolean toggleSkipMemoryCache() {
this.skipMemoryCache = !this.skipMemoryCache;
return this.skipMemoryCache;
}

static class ViewHolder {
ImageView image;
TextView text;
Expand Down
Loading