-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6ab893f
commit eec5380
Showing
6 changed files
with
267 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
app/src/main/java/com/jerey/keepgank/View/GlideRoundTransform.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package com.jerey.keepgank.View; | ||
|
||
import android.content.Context; | ||
import android.content.res.Resources; | ||
import android.graphics.Bitmap; | ||
import android.graphics.BitmapShader; | ||
import android.graphics.Canvas; | ||
import android.graphics.Paint; | ||
import android.graphics.RectF; | ||
|
||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; | ||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; | ||
|
||
public class GlideRoundTransform extends BitmapTransformation { | ||
|
||
private static float radius = 0f; | ||
|
||
public GlideRoundTransform(Context context) { | ||
this(context, 4); | ||
} | ||
|
||
public GlideRoundTransform(Context context, int dp) { | ||
super(context); | ||
this.radius = Resources.getSystem().getDisplayMetrics().density * dp; | ||
} | ||
|
||
@Override | ||
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { | ||
return roundCrop(pool, toTransform); | ||
} | ||
|
||
private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { | ||
if (source == null) return null; | ||
|
||
Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); | ||
if (result == null) { | ||
result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); | ||
} | ||
|
||
Canvas canvas = new Canvas(result); | ||
Paint paint = new Paint(); | ||
paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); | ||
paint.setAntiAlias(true); | ||
RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); | ||
canvas.drawRoundRect(rectF, radius, radius, paint); | ||
return result; | ||
} | ||
|
||
@Override | ||
public String getId() { | ||
return getClass().getName() + Math.round(radius); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
171 changes: 171 additions & 0 deletions
171
app/src/main/java/com/jerey/keepgank/utils/SPUtils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
package com.jerey.keepgank.utils; | ||
|
||
import android.content.Context; | ||
import android.content.SharedPreferences; | ||
|
||
import com.jerey.loglib.LogTools; | ||
|
||
import java.lang.reflect.InvocationTargetException; | ||
import java.lang.reflect.Method; | ||
import java.util.Map; | ||
|
||
public class SPUtils { | ||
/** | ||
* 保存在手机里面的文件名 | ||
*/ | ||
public static final String FILE_NAME = "setting_data"; | ||
|
||
/** | ||
* 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 | ||
* @param context | ||
* @param key | ||
* @param object | ||
*/ | ||
public static <T> void put(Context context, String key, T object) { | ||
|
||
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, | ||
Context.MODE_PRIVATE); | ||
SharedPreferences.Editor editor = sp.edit(); | ||
LogTools.i("put :" + object); | ||
if (object instanceof Double) { | ||
LogTools.i("put defaultObject instanceof Double"); | ||
editor.putFloat(key, new Float((Double) object)); | ||
} | ||
|
||
if (object instanceof String) { | ||
editor.putString(key, (String) object); | ||
} else if (object instanceof Integer) { | ||
editor.putInt(key, (Integer) object); | ||
} else if (object instanceof Boolean) { | ||
editor.putBoolean(key, (Boolean) object); | ||
} else if (object instanceof Float) { | ||
LogTools.i("put defaultObject instanceof Float"); | ||
editor.putFloat(key, (Float) object); | ||
} else if (object instanceof Long) { | ||
editor.putLong(key, (Long) object); | ||
} else { | ||
editor.putString(key, object.toString()); | ||
} | ||
|
||
SharedPreferencesCompat.apply(editor); | ||
} | ||
|
||
/** | ||
* 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 | ||
* @param context | ||
* @param key | ||
* @param defaultObject | ||
* @return | ||
*/ | ||
public static <T> T get(Context context, String key, T defaultObject) { | ||
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, | ||
Context.MODE_PRIVATE); | ||
|
||
if (defaultObject instanceof String) { | ||
return (T) sp.getString(key, (String) defaultObject); | ||
} else if (defaultObject instanceof Integer) { | ||
return (T) new Integer(sp.getInt(key, (Integer) defaultObject)); | ||
} else if (defaultObject instanceof Boolean) { | ||
return (T) new Boolean(sp.getBoolean(key, (Boolean) defaultObject)); | ||
} else if (defaultObject instanceof Float) { | ||
LogTools.i("defaultObject instanceof Float"); | ||
return (T) new Float(sp.getFloat(key, (Float) defaultObject)); | ||
} else if (defaultObject instanceof Double) { | ||
LogTools.i("defaultObject instanceof double"); | ||
return (T) new Double(sp.getFloat(key, Float.parseFloat(defaultObject.toString()))); | ||
} else if (defaultObject instanceof Long) { | ||
return (T) new Long(sp.getLong(key, (Long) defaultObject)); | ||
} | ||
|
||
return null; | ||
} | ||
|
||
/** | ||
* 移除某个key值已经对应的值 | ||
* @param context | ||
* @param key | ||
*/ | ||
public static void remove(Context context, String key) { | ||
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, | ||
Context.MODE_PRIVATE); | ||
SharedPreferences.Editor editor = sp.edit(); | ||
editor.remove(key); | ||
SharedPreferencesCompat.apply(editor); | ||
} | ||
|
||
/** | ||
* 清除所有数据 | ||
* @param context | ||
*/ | ||
public static void clear(Context context) { | ||
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, | ||
Context.MODE_PRIVATE); | ||
SharedPreferences.Editor editor = sp.edit(); | ||
editor.clear(); | ||
SharedPreferencesCompat.apply(editor); | ||
} | ||
|
||
/** | ||
* 查询某个key是否已经存在 | ||
* @param context | ||
* @param key | ||
* @return | ||
*/ | ||
public static boolean contains(Context context, String key) { | ||
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, | ||
Context.MODE_PRIVATE); | ||
return sp.contains(key); | ||
} | ||
|
||
/** | ||
* 返回所有的键值对 | ||
* @param context | ||
* @return | ||
*/ | ||
public static Map<String, ?> getAll(Context context) { | ||
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, | ||
Context.MODE_PRIVATE); | ||
return sp.getAll(); | ||
} | ||
|
||
/** | ||
* 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类 | ||
* @author zhy | ||
*/ | ||
private static class SharedPreferencesCompat { | ||
private static final Method sApplyMethod = findApplyMethod(); | ||
|
||
/** | ||
* 反射查找apply的方法 | ||
* @return | ||
*/ | ||
@SuppressWarnings({"unchecked", "rawtypes"}) | ||
private static Method findApplyMethod() { | ||
try { | ||
Class clz = SharedPreferences.Editor.class; | ||
return clz.getMethod("apply"); | ||
} catch (NoSuchMethodException e) { | ||
} | ||
|
||
return null; | ||
} | ||
|
||
/** | ||
* 如果找到则使用apply执行,否则使用commit | ||
* @param editor | ||
*/ | ||
public static void apply(SharedPreferences.Editor editor) { | ||
try { | ||
if (sApplyMethod != null) { | ||
sApplyMethod.invoke(editor); | ||
return; | ||
} | ||
} catch (IllegalArgumentException e) { | ||
} catch (IllegalAccessException e) { | ||
} catch (InvocationTargetException e) { | ||
} | ||
editor.commit(); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters