Skip to content

Instantly share code, notes, and snippets.

@junlincao
junlincao / DayTime.java
Created October 14, 2015 09:44
根据经纬度计算日出与日落时间
/**
* 根据经纬度计算日出日落时间
* @param lat 纬度
* @param lng 经度
* @param isSunRise true计算日出,false计算日落
* @return int[] 0位置为小时,1位置为分钟
*/
public static int[] getDayTime(double lat, double lng, boolean isSunRise){
lat = Math.toRadians(lat);
@junlincao
junlincao / exitapp.java
Created October 15, 2015 09:36
exit app
int currentVersion = android.os.Build.VERSION.SDK_INT;
if (currentVersion > android.os.Build.VERSION_CODES.ECLAIR_MR1) {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
} else {// android2.1
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
@junlincao
junlincao / ripple_drawable.txt
Created November 23, 2015 09:37
android 5.0 ripple 写法
写ripple drawable时候,如果默认背景带透明度,则item加一个id="@android:id/mask",以保证边界:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:id="@android:id/mask">
<shape>
<corners android:radius="4dp" />
<solid android:color="@color/white" />
</shape>
</item>
@junlincao
junlincao / gist:5065b0d36997d95f4635
Created December 15, 2015 16:49
okhttp Interceptor 中为post等body添加额外字段(MultipartRequestBody 可能有问题,未测试)
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
final Request request = chain.request();
if (!HttpMethod.requiresRequestBody(request.method())) {
return chain.proceed(request);
}
final RequestBody newRb = new FormEncodingBuilder()
@junlincao
junlincao / logUtil.java
Created December 30, 2015 09:16
android logUtil
public class LogUtil {
private boolean debug;
private String tag;
private static final String LOG_FILE_NAME = "jz.log";
public LogUtil() {
this(null);
}
public static boolean isDark(Bitmap bitmap) {
final float darkThreshold = bitmap.getWidth() * bitmap.getHeight() * 0.45f;
final int w = bitmap.getWidth();
final int h = bitmap.getHeight();
int darkPixels = 0;
int[] lineColor = new int[w];
for (int i = 0; i < h - 1; i++) {
bitmap.getPixels(lineColor, 0, w, 0, i, w, 1);
for (int color : lineColor) {
@junlincao
junlincao / gist:b82d6b1aa1cec218b0e3df2073f7acdb
Created August 18, 2017 02:54
Somthing about cursor.getText() and cursor.getDouble()
UserCharge imoney为double类型:
cursor.getText() 和 cursor.getDouble()效果不能保证为一致!
getText()方法可能丢失精度,getDouble()方法结果正确
UserCharge imoney 为 text类型:
查询cursor.getText() 和 cursor.getDouble()效果一致!而且text类型并不影响sql对字段查询统计求和等操作
而且由于cursor代码是系统代码无法修改,ORM 将UserCharge的imoney字段改为String 或者 BigDecimal都只是按text读取,反而用double能保证读取结果正确
@junlincao
junlincao / ToastCompat.java
Last active December 4, 2017 03:47
ToastCompat, make toast shown when user disabled notification permission
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.PixelFormat;
import android.support.annotation.StringRes;
import android.support.v4.app.NotificationManagerCompat;
import android.util.Log;
import android.view.Gravity;
@junlincao
junlincao / EmojiConverter.java
Last active February 26, 2018 06:57
转换utf-8 3个字节无法表示的字符
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
/**
* 转换utf-8 3个字节无法表示的字符
*
* @author CJL
* @since 2018-02-26
@junlincao
junlincao / PcmWaveView.java
Created September 11, 2018 11:36
pcm voice wave view
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;