Skip to content

Commit

Permalink
1. improve referencing
Browse files Browse the repository at this point in the history
2. fixed initialised image height on image load with picasso
  • Loading branch information
jjhesk committed Apr 29, 2016
1 parent 2c64d23 commit 8be8675
Show file tree
Hide file tree
Showing 11 changed files with 370 additions and 356 deletions.
547 changes: 216 additions & 331 deletions .idea/workspace.xml

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions gradle.properties
@@ -1,6 +1,6 @@
# Project-wide Gradle settings.
VERSION_NAME=1.8.5
VERSION_CODE=85
VERSION_NAME=1.8.6
VERSION_CODE=86
GROUP=com.hkm.loyalslider
SUPPORT_LIBRARY=23.3.0
FITKIT=0.4.1
Expand Down
2 changes: 1 addition & 1 deletion library/library.iml
Expand Up @@ -113,7 +113,7 @@
<orderEntry type="library" exported="" name="support-v13-23.3.0" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.3.0" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-23.3.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.3.0" level="project" />
<orderEntry type="library" exported="" name="glide-3.7.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.3.0" level="project" />
</component>
</module>
84 changes: 78 additions & 6 deletions library/src/main/java/com/hkm/slider/LoyalUtil.java
Expand Up @@ -2,18 +2,29 @@

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.DisplayMetrics;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.Request;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.bumptech.glide.request.target.ImageViewTarget;
import com.bumptech.glide.request.target.SizeReadyCallback;
import com.hkm.slider.SliderTypes.AdvancedTextSliderView;
import com.hkm.slider.SliderTypes.BaseSliderView;
import com.hkm.slider.SliderTypes.CompactFrameSliderView;
import com.hkm.slider.SliderTypes.CompactSliderView;
import com.squareup.picasso.Callback;
import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;

/**
* Created by hesk on 25/11/15.
Expand Down Expand Up @@ -50,13 +61,74 @@ public static void glideImplementation(String i, ImageView target, Context conte
}
}

public static void glideImplementation(String i, final ImageView target, Context context, final Runnable run) {
if (i.contains(".gif")) {
Glide.with(context).load(i).asGif()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new ImageViewTarget<GifDrawable>(target) {
@Override
protected void setResource(GifDrawable resource) {
target.setImageDrawable(resource);
run.run();
}
});
} else {
Glide.with(context).load(i)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new GlideDrawableImageViewTarget(target) {
@Override
protected void setResource(GlideDrawable resource) {
super.setResource(resource);
run.run();
}
});
;
}
}


public static void picassoImplementation(String u, final ImageView target, Context context, final Runnable callback) {
Picasso.with(context)
.load(u)
.memoryPolicy(MemoryPolicy.NO_STORE, MemoryPolicy.NO_CACHE)
.into(target, new Callback() {
@Override
public void onSuccess() {
callback.run();
}

@Override
public void onError() {

}
});
}

public static void picassoImplementation(String u, ImageView target, Context context) {
Picasso.with(context)
.load(u)
.memoryPolicy(MemoryPolicy.NO_STORE, MemoryPolicy.NO_CACHE)
.into(target);
}


public static void hybridImplementation(String u, final ImageView target, Context context, final Runnable callback) {
if (u.contains(".gif")) {
Glide.with(context).load(u).asGif()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new ImageViewTarget<GifDrawable>(target) {
@Override
protected void setResource(GifDrawable resource) {
target.setImageDrawable(resource);
callback.run();
}
});
} else {
picassoImplementation(u, target, context, callback);
}
}


public static void hybridImplementation(String u, ImageView target, Context context) {
if (u.contains(".gif")) {
Glide.with(context).load(u).asGif()
Expand All @@ -70,28 +142,28 @@ public static void hybridImplementation(String u, ImageView target, Context cont
/**
* This method converts dp unit to equivalent pixels, depending on device density.
*
* @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels
* @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels
* @param context Context to get resources and device specific display metrics
* @return A float value to represent px equivalent to dp depending on device density
*/
public static float convertDpToPixel(float dp, Context context){
public static float convertDpToPixel(float dp, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
float px = dp * ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
return px;
}

/**
* This method converts device specific pixels to density independent pixels.
*
* @param px A value in px (pixels) unit. Which we need to convert into db
* @param px A value in px (pixels) unit. Which we need to convert into db
* @param context Context to get resources and device specific display metrics
* @return A float value to represent dp equivalent to px value
*/
public static float convertPixelsToDp(float px, Context context){
public static float convertPixelsToDp(float px, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
float dp = px / ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
return dp;
}

Expand Down
11 changes: 10 additions & 1 deletion library/src/main/java/com/hkm/slider/SliderAdapter.java
Expand Up @@ -60,6 +60,9 @@ public void addSliders(List<T> slider) {
T slide = it.next();
slide.setOnImageLoadListener(this);
slide.setSlideOrderNumber(orderNumber);
if (mlayout != null) {
slide.setSliderContainerInternal(mlayout);
}
mImageContents.add(slide);
orderNumber++;
}
Expand Down Expand Up @@ -120,11 +123,17 @@ public void setOnInitiateViewListener(SliderLayout.OnViewConfigurationDetected o
enable_layout_observer = true;
}

private SliderLayout mlayout;

public void setSliderContainerInternal(SliderLayout ob) {
mlayout = ob;
}

@Override
public Object instantiateItem(ViewGroup container, final int position) {
BaseSliderView b = mImageContents.get(position);
View item = b.getView();
collectionConfiguration(item, position);
// collectionConfiguration(item, position);
container.addView(item);
return item;
}
Expand Down
9 changes: 9 additions & 0 deletions library/src/main/java/com/hkm/slider/SliderLayout.java
Expand Up @@ -116,6 +116,7 @@ public class SliderLayout extends RelativeLayout {
private boolean mCycling;
private boolean sidebuttons;
private boolean mDisabledSlider = false;
private boolean mAutoAdjustSliderHeight = false;
/**
* Determine if auto recover after user touch the {@link com.hkm.slider.Tricks.ViewPagerEx}
*/
Expand Down Expand Up @@ -475,6 +476,9 @@ public final <T extends BaseSliderView> void loadSliderList(List<T> slide_sequen
total_length = slide_sequence.size();
mSliderAdapter.setOnInitiateViewListener(mViewSizeMonitor);
}
if (isAutoAdjustSlideHeightInternal()) {
mSliderAdapter.setSliderContainerInternal(this);
}
mSliderAdapter.loadSliders(slide_sequence);
afterLoadSliders();
}
Expand Down Expand Up @@ -1028,7 +1032,12 @@ public void onDetachedFromWindow() {
mh.removeCallbacksAndMessages(null);
}

public boolean isAutoAdjustSlideHeightInternal() {
return mAutoAdjustSliderHeight;
}

public void setAutoAdjustImageByHeight() {
mAutoAdjustSliderHeight = true;
addOnPageChangeListener(new ViewPagerEx.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
Expand Down
Expand Up @@ -15,12 +15,12 @@ public AdjustableSlide(Context context) {
super(context);
}


@Override
public View getView() {
View v = LayoutInflater.from(mContext).inflate(R.layout.render_type_adjustable, null);
ImageView target = (ImageView) v.findViewById(R.id.ns_slider_image);
applyImageWithSmartBoth(v, target);
applyImageWithSmartBothAndNotifyHeight(v, target);
// applyImageWithSmartBoth(v, target);
return v;
}
}
Expand Up @@ -29,13 +29,15 @@
import com.hkm.slider.CapturePhotoUtils;
import com.hkm.slider.LoyalUtil;
import com.hkm.slider.R;
import com.hkm.slider.SliderLayout;
import com.squareup.picasso.Callback;
import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import com.squareup.picasso.Target;

import java.io.File;
import java.lang.ref.WeakReference;

/**
* When you want to make your own slider view, you must extends from this class.
Expand Down Expand Up @@ -79,6 +81,15 @@ public abstract class BaseSliderView {
*/
protected ScaleType mScaleType = ScaleType.Fit;

/**
* reference of the parent
*/
protected WeakReference<SliderLayout> sliderContainer;

public void setSliderContainerInternal(SliderLayout b) {
this.sliderContainer=new WeakReference<SliderLayout>(b);
}

public enum ScaleType {
CenterCrop, CenterInside, Fit, FitCenterCrop
}
Expand Down Expand Up @@ -242,18 +253,18 @@ public BaseSliderView setOnSliderClickListener(OnSliderClickListener l) {
}

protected View.OnLongClickListener mDefaultLongClickListener = null;
protected FragmentManager fmg;
protected WeakReference<FragmentManager> fmg;

/**
* to enable the slider for saving images
*
* @param fmg FragmentManager
* @param mfmg FragmentManager
* @return this thing
*/
public BaseSliderView enableSaveImageByLongClick(FragmentManager fmg) {
public BaseSliderView enableSaveImageByLongClick(FragmentManager mfmg) {
mLongClickSaveImage = true;
mDefaultLongClickListener = null;
this.fmg = fmg;
this.fmg = new WeakReference<FragmentManager>(mfmg);
return this;
}

Expand All @@ -269,10 +280,10 @@ public BaseSliderView setSliderLongClickListener(View.OnLongClickListener listen
return this;
}

public BaseSliderView setSliderLongClickListener(View.OnLongClickListener listen, FragmentManager fmg) {
public BaseSliderView setSliderLongClickListener(View.OnLongClickListener listen, FragmentManager mfmg) {
mDefaultLongClickListener = listen;
mLongClickSaveImage = false;
this.fmg = fmg;
this.fmg = new WeakReference<FragmentManager>(mfmg);
return this;
}

Expand Down Expand Up @@ -377,7 +388,7 @@ private void triggerOnLongClick(View mView) {
@Override
public boolean onLongClick(View v) {
final saveImageDialog saveImageDial = new saveImageDialog();
saveImageDial.show(fmg, mDescription);
saveImageDial.show(fmg.get(), mDescription);
return false;
}
};
Expand Down Expand Up @@ -475,9 +486,26 @@ protected void applyImageWithPicasso(View v, final ImageView targetImageView) {
reportStatusEnd(true);
}

protected void applyImageWithSmartBoth(View v, final ImageView targetImageView) {
current_image_holder = targetImageView;
LoyalUtil.hybridImplementation(getUrl(), targetImageView, getContext());
protected void applyImageWithSmartBoth(View v, final ImageView target) {
current_image_holder = target;
LoyalUtil.hybridImplementation(getUrl(), target, getContext());
hideLoadingProgress(v);
triggerOnLongClick(v);
reportStatusEnd(true);
}


protected void applyImageWithSmartBothAndNotifyHeight(View v, final ImageView target) {
current_image_holder = target;
LoyalUtil.hybridImplementation(getUrl(), target, getContext(), new Runnable() {
@Override
public void run() {
if (sliderContainer == null) return;
if (sliderContainer.get().getCurrentPosition() == getSliderOrderNumber()) {
sliderContainer.get().setFitToCurrentImageHeight();
}
}
});
hideLoadingProgress(v);
triggerOnLongClick(v);
reportStatusEnd(true);
Expand Down Expand Up @@ -515,7 +543,7 @@ public void complete() {
@Override
public void run() {
final SMessage sm = SMessage.message("This image is kept in your photo directory now.");
sm.show(fmg, "done");
sm.show(fmg.get(), "done");
}
});
}
Expand Down
Expand Up @@ -246,7 +246,7 @@ public void onSuccess() {
public boolean onLongClick(View v) {
prepare_request_save_image = mreq;
final saveImageDialog saveImageDial = new saveImageDialog();
saveImageDial.show(fmg, "DESC_SAVE_IM");
saveImageDial.show(fmg.get(), "DESC_SAVE_IM");
return false;
}
});
Expand Down
Expand Up @@ -206,7 +206,7 @@ public void onSuccess() {
public boolean onLongClick(View v) {
prepare_request_save_image = mreq;
final saveImageDialog saveImageDial = new saveImageDialog();
saveImageDial.show(fmg, "DESC_SAVE_IM");
saveImageDial.show(fmg.get(), "DESC_SAVE_IM");
return false;
}
});
Expand Down
11 changes: 11 additions & 0 deletions weblnslider/src/main/java/com/hkm/loyalns/mod/NsZoomable.java
Expand Up @@ -26,4 +26,15 @@ protected void onCreate(Bundle savedInstanceState) {
startViewPager(mViewPager);

}

/**
* Call this when your activity is done and should be closed. The
* ActivityResult is propagated back to whoever launched you via
* onActivityResult().
*/
@Override
public void finish() {
super.finish();
Runtime.getRuntime().gc();
}
}

0 comments on commit 8be8675

Please sign in to comment.