Skip to content

Instantly share code, notes, and snippets.

View klarcrk's full-sized avatar
🎯
Focusing

klarcrk klarcrk

🎯
Focusing
View GitHub Profile
@klarcrk
klarcrk / UrlSpanLinkMovementMethod.kt
Created December 26, 2019 07:25
Android: Html.fromHtml will use URLSpan to handle url click event. The default behaviour is open a installed broswer. This class will intercept url click event.You can do want you want when user click url. just textview.setMovementMethod(object:UrlSpanLinkMovementMethod(){...})
import android.text.Layout
import android.text.Spannable
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.text.style.URLSpan
import android.view.MotionEvent
import android.widget.TextView
abstract class UrlSpanLinkMovementMethod : LinkMovementMethod() {
@klarcrk
klarcrk / Json remove all empty element
Last active May 15, 2018 11:05
remove all empty element from a json string.Empty element includes "",null,none,"null","none",empty array [],or a array only contains listed empty elements.
val gson = GsonBuilder().create()
val data: HashMap<String, JsonElement> = gson.fromJson(gsonString, object : TypeToken<HashMap<String, JsonElement>>() {
}.type)
JsonCleaner.removeJsonEmptyPart(data)
val newData = gson.toJson(data)
@klarcrk
klarcrk / PermissionActivity.java
Created March 16, 2018 05:51
Android Permission Request Activity Util. From Lawnchair
package ch.deletescape.lawnchair.lawnfeed;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.ResultReceiver;
@klarcrk
klarcrk / draft
Last active October 19, 2017 15:47
RecyclerView Calc item Margin
//计算RecyclerView GridView的 每个 item的左右间距,以下是使所有的item左右间距相等
int rowIndex= 2;//item在当前行的位置 从0开始
int spanSize = xxx;//GridView每行的item 个数
int margin = xxx;//要设置的间距
int marginStart = (spanSize-rowIndex)/spanSize*margin;
int marginEnd = (rowIndex+1)/spanSize*margin;
@klarcrk
klarcrk / CardViewUtil.java
Created August 3, 2017 02:59
Clear CardView padding before Lollipop,or content will be inpressed
public static void clearPaddingBeforeLollipop(CardView cardView) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
cardView.setMaxCardElevation(0);
}
}
@klarcrk
klarcrk / FillParentTabLayout.java
Created April 26, 2017 06:53
make tablayout fill parent even it has few items
public class FillParentTabLayout extends TabLayout {
public FillParentTabLayout(Context context) {
super(context);
}
public FillParentTabLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@klarcrk
klarcrk / Spanable
Last active April 13, 2017 08:32
Easy way to append multi type SpannableString
SpannableString spanString = new SpannableString("span styled msg");
spanString.setSpan(new ScaleBgSpan(ContextCompat.getColor(mContext, R.color.green_5e),
ContextCompat.getColor(mContext, R.color.white_color),
DensityUtil.sp2px(mContext, 12), 12), 0,
spanString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(spanString);
builder.append(" ");
builder.append("other msg");
@klarcrk
klarcrk / CardViewUtil.java
Created April 13, 2017 03:18
remove extra padding before Android Lollipop
public class CardViewUtil {
public static void clearPaddingBeforeLollipop(CardView cardView) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
cardView.setMaxCardElevation(0);
}
}
}
@klarcrk
klarcrk / ShopTabFragment.java
Created April 7, 2017 06:07
Scroll up show button
shopTabRecyclerBinding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
private boolean scrollUp = true;
private long showTime = 2000;
private Runnable disappearRunnable = new Runnable() {
@Override
public void run() {
shopTabRecyclerBinding.homeScrollUpIco.animate().alpha(0).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
@klarcrk
klarcrk / Rxjava2Test.java
Last active May 7, 2018 08:09
Rxjava2 取消订阅
public class Rxjava2Test {
public static void main1(String[] args) {
//停止某个定时任务
PublishSubject stop = PublishSubject.create();
final Observable<Long> observable = Observable.interval(1, TimeUnit.SECONDS).takeUntil(stop);
observable.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
//do something
}