mirror of
				https://github.com/wasabeef/glide-transformations.git
				synced 2025-10-25 13:31:31 +08:00 
			
		
		
		
	Merged NinePatchMaskTransformation to MaskTransformation
1.merged the NinePatchMaskTransformation to the maskTransformation. 2.replace mask resource.
This commit is contained in:
		| @@ -19,7 +19,6 @@ import jp.wasabeef.glide.transformations.CropSquareTransformation; | |||||||
| import jp.wasabeef.glide.transformations.CropTransformation; | import jp.wasabeef.glide.transformations.CropTransformation; | ||||||
| import jp.wasabeef.glide.transformations.GrayscaleTransformation; | import jp.wasabeef.glide.transformations.GrayscaleTransformation; | ||||||
| import jp.wasabeef.glide.transformations.MaskTransformation; | import jp.wasabeef.glide.transformations.MaskTransformation; | ||||||
| import jp.wasabeef.glide.transformations.NinePatchMaskTransformation; |  | ||||||
| import jp.wasabeef.glide.transformations.RoundedCornersTransformation; | import jp.wasabeef.glide.transformations.RoundedCornersTransformation; | ||||||
| import jp.wasabeef.glide.transformations.gpu.BrightnessFilterTransformation; | import jp.wasabeef.glide.transformations.gpu.BrightnessFilterTransformation; | ||||||
| import jp.wasabeef.glide.transformations.gpu.ContrastFilterTransformation; | import jp.wasabeef.glide.transformations.gpu.ContrastFilterTransformation; | ||||||
| @@ -77,19 +76,23 @@ public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> { | |||||||
|   @Override public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) { |   @Override public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) { | ||||||
|     switch (mDataSet.get(position)) { |     switch (mDataSet.get(position)) { | ||||||
|       case Mask: |       case Mask: | ||||||
|  |         int width = Utils.dip2px(mContext, 133.33f); | ||||||
|  |         int height = Utils.dip2px(mContext, 126.33f); | ||||||
|         Glide.with(mContext) |         Glide.with(mContext) | ||||||
|             .load(R.drawable.demo) |             .load(R.drawable.check) | ||||||
|             .override(210, 210) |             .override(width, height) | ||||||
|             .bitmapTransform(new CenterCrop(mContext), |             .bitmapTransform(new CenterCrop(mContext), | ||||||
|                 new MaskTransformation(mContext, R.drawable.mask210)) |                 new MaskTransformation(mContext, R.drawable.mask_starfish)) | ||||||
|             .into(holder.image); |             .into(holder.image); | ||||||
|         break; |         break; | ||||||
|       case NinePatchMask: |       case NinePatchMask: | ||||||
|  |         width = Utils.dip2px(mContext, 150.0f); | ||||||
|  |         height = Utils.dip2px(mContext, 100.0f); | ||||||
|         Glide.with(mContext) |         Glide.with(mContext) | ||||||
|             .load(R.drawable.demo) |             .load(R.drawable.check) | ||||||
|             .override(300, 300) |             .override(width, height) | ||||||
|             .bitmapTransform(new CenterCrop(mContext), |             .bitmapTransform(new CenterCrop(mContext), | ||||||
|                 new NinePatchMaskTransformation(mContext, R.drawable.chat_me_mask)) |                 new MaskTransformation(mContext, R.drawable.mask_chat_right)) | ||||||
|             .into(holder.image); |             .into(holder.image); | ||||||
|         break; |         break; | ||||||
|       case CropTop: |       case CropTop: | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								example/src/main/java/jp/wasabeef/example/glide/Utils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								example/src/main/java/jp/wasabeef/example/glide/Utils.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | package jp.wasabeef.example.glide; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Copyright (C) 2015 Wasabeef | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  * http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | import android.content.Context; | ||||||
|  |  | ||||||
|  | public class Utils { | ||||||
|  |  | ||||||
|  |     public static int dip2px(Context context, float dp) { | ||||||
|  |         float scale = context.getResources().getDisplayMetrics().density; | ||||||
|  |         return (int) (dp * scale + 0.5f); | ||||||
|  |     } | ||||||
|  | } | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 19 KiB | 
| Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								example/src/main/res/drawable-xxhdpi/mask_starfish.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								example/src/main/res/drawable-xxhdpi/mask_starfish.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 7.5 KiB | 
| @@ -23,14 +23,12 @@ import android.graphics.Paint; | |||||||
| import android.graphics.PorterDuff; | import android.graphics.PorterDuff; | ||||||
| import android.graphics.PorterDuffXfermode; | import android.graphics.PorterDuffXfermode; | ||||||
| import android.graphics.drawable.Drawable; | import android.graphics.drawable.Drawable; | ||||||
|  |  | ||||||
| import com.bumptech.glide.Glide; | import com.bumptech.glide.Glide; | ||||||
| import com.bumptech.glide.load.Transformation; | import com.bumptech.glide.load.Transformation; | ||||||
| import com.bumptech.glide.load.engine.Resource; | import com.bumptech.glide.load.engine.Resource; | ||||||
| import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; | import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; | ||||||
| import com.bumptech.glide.load.resource.bitmap.BitmapResource; | import com.bumptech.glide.load.resource.bitmap.BitmapResource; | ||||||
|  | import jp.wasabeef.glide.transformations.internal.Utils; | ||||||
| import jp.wasabeef.glide.transformations.internal.Util; |  | ||||||
|  |  | ||||||
| public class MaskTransformation implements Transformation<Bitmap> { | public class MaskTransformation implements Transformation<Bitmap> { | ||||||
|  |  | ||||||
| @@ -44,9 +42,9 @@ public class MaskTransformation implements Transformation<Bitmap> { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * @param maskId If you change the mask file, please rename the mask file, or Glide will get the |    * @param maskId If you change the mask file, please also rename the mask file, or Glide will get | ||||||
|    *               cache with the old mask. Because getId() will return the same values if using the |    *               the cache with the old mask. Because getId() return the same values if using the | ||||||
|    *               same make file name. If you have a good idea please tell we, thanks. |    *               same make file name. If you have a good idea please tell us, thanks. | ||||||
|    */ |    */ | ||||||
|   public MaskTransformation(Context context, int maskId) { |   public MaskTransformation(Context context, int maskId) { | ||||||
|     mBitmapPool = Glide.get(context).getBitmapPool(); |     mBitmapPool = Glide.get(context).getBitmapPool(); | ||||||
| @@ -65,7 +63,7 @@ public class MaskTransformation implements Transformation<Bitmap> { | |||||||
|       result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); |       result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     Drawable mask = Util.getMaskDrawable(mContext, mMaskId); |     Drawable mask = Utils.getMaskDrawable(mContext, mMaskId); | ||||||
|  |  | ||||||
|     Canvas canvas = new Canvas(result); |     Canvas canvas = new Canvas(result); | ||||||
|     mask.setBounds(0, 0, width, height); |     mask.setBounds(0, 0, width, height); | ||||||
| @@ -75,7 +73,8 @@ public class MaskTransformation implements Transformation<Bitmap> { | |||||||
|     return BitmapResource.obtain(result, mBitmapPool); |     return BitmapResource.obtain(result, mBitmapPool); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override public String getId() { |   @Override | ||||||
|  |   public String getId() { | ||||||
|     return "MaskTransformation(maskId=" |     return "MaskTransformation(maskId=" | ||||||
|             + mContext.getResources().getResourceEntryName(mMaskId) + ")"; |             + mContext.getResources().getResourceEntryName(mMaskId) + ")"; | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -1,83 +0,0 @@ | |||||||
| package jp.wasabeef.glide.transformations; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Copyright (C) 2015 Wasabeef |  | ||||||
|  * |  | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
|  * you may not use this file except in compliance with the License. |  | ||||||
|  * You may obtain a copy of the License at |  | ||||||
|  * |  | ||||||
|  * http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  * |  | ||||||
|  * Unless required by applicable law or agreed to in writing, software |  | ||||||
|  * distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
|  * See the License for the specific language governing permissions and |  | ||||||
|  * limitations under the License. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| import android.content.Context; |  | ||||||
| import android.graphics.Bitmap; |  | ||||||
| import android.graphics.Canvas; |  | ||||||
| import android.graphics.Paint; |  | ||||||
| import android.graphics.PorterDuff; |  | ||||||
| import android.graphics.PorterDuffXfermode; |  | ||||||
| import android.graphics.drawable.Drawable; |  | ||||||
|  |  | ||||||
| import com.bumptech.glide.Glide; |  | ||||||
| import com.bumptech.glide.load.Transformation; |  | ||||||
| import com.bumptech.glide.load.engine.Resource; |  | ||||||
| import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; |  | ||||||
| import com.bumptech.glide.load.resource.bitmap.BitmapResource; |  | ||||||
| import com.bumptech.glide.request.target.Target; |  | ||||||
|  |  | ||||||
| import jp.wasabeef.glide.transformations.internal.Util; |  | ||||||
|  |  | ||||||
| public class NinePatchMaskTransformation implements Transformation<Bitmap> { |  | ||||||
|  |  | ||||||
|   private static Paint mMaskingPaint = new Paint(); |  | ||||||
|   private Context mContext; |  | ||||||
|   private BitmapPool mBitmapPool; |  | ||||||
|   private int mMaskId; |  | ||||||
|  |  | ||||||
|   static { |  | ||||||
|     mMaskingPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * @param maskId If you change the mask file, please rename the mask file, or Glide will get the |  | ||||||
|    *               cache with the old mask. Because getId() will return the same values if using the |  | ||||||
|    *               same make file name. If you have a good idea please tell we, thanks. |  | ||||||
|    */ |  | ||||||
|   public NinePatchMaskTransformation(Context context, int maskId) { |  | ||||||
|     mBitmapPool = Glide.get(context).getBitmapPool(); |  | ||||||
|     mContext = context; |  | ||||||
|     mMaskId = maskId; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @Override |  | ||||||
|   public Resource<Bitmap> transform(Resource<Bitmap> resource, int outWidth, int outHeight) { |  | ||||||
|     Bitmap source = resource.get(); |  | ||||||
|     int width = outWidth == Target.SIZE_ORIGINAL ? source.getWidth() : outWidth; |  | ||||||
|     int height = outHeight == Target.SIZE_ORIGINAL ? source.getHeight() : outHeight; |  | ||||||
|  |  | ||||||
|     Bitmap result = mBitmapPool.get(width, height, Bitmap.Config.ARGB_8888); |  | ||||||
|     if (result == null) { |  | ||||||
|       result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     Drawable mask = Util.getMaskDrawable(mContext, mMaskId); |  | ||||||
|  |  | ||||||
|     Canvas canvas = new Canvas(result); |  | ||||||
|     mask.setBounds(0, 0, width, height); |  | ||||||
|     mask.draw(canvas); |  | ||||||
|     canvas.drawBitmap(source, 0, 0, mMaskingPaint); |  | ||||||
|  |  | ||||||
|     return BitmapResource.obtain(result, mBitmapPool); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @Override public String getId() { |  | ||||||
|     return "NinePatchMaskTransformation(mMaskId=" |  | ||||||
|             + mContext.getResources().getResourceEntryName(mMaskId) + ")"; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -20,9 +20,9 @@ import android.os.Build; | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| public final class Util { | public final class Utils { | ||||||
| 
 | 
 | ||||||
|   private Util() { |   private Utils() { | ||||||
|     // Utility class. |     // Utility class. | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
		Reference in New Issue
	
	Block a user