Skip to content

Instantly share code, notes, and snippets.

import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Build;
import android.text.Editable;
import android.util.AttributeSet;
import android.util.TypedValue;
@ndangnguyen
ndangnguyen / dart_flutter_why_not.md
Created April 3, 2020 06:48 — forked from long25vn/dart_flutter_why_not.md
Dart và Flutter, tại sao không?

Part 1. Mọi thứ đều bắt đầu từ những thứ cơ bản nhất

Khi nhắc đến việc làm sao để tạo ra 1 ứng dụng mobile thì thứ mọi người sẽ lặp tức nghĩ ngay đến là native app (Android và iOS), nhưng bên cạnh đó vẫn còn rất nhiều công nghệ có thể giúp bạn tạo ra 1 ứng dụng mobile như Cordova, Webview (WeChat), Ionic, Xamarin và React Native. Tất cả các framework, platform đó đều hổ trợ người dùng tạo ra được 1 ứng dụng mobile theo ý muốn của mình. Và để không bỏ lỡ cuộc vui thì Google cũng đã mang đến cho người dùng đứa con mới nhất của mình - Flutter - nó kế thừa cũng như nổi bật hơn các công nghệ hybrid app kia. Vậy thì làm sao để có thể sử dụng, có thể tạo ra được những sản phẩm theo ý muốn của mình? Bài viết với những kiến thức của bản thân mình sẽ đem đến cho bạn có được 1 số kiến thức cơ bản nhất để có thể tự mình "chiến" và "khám phá" Flutter.

Dart Language

Bao giờ cũng vậy, bạn muốn "chiến" hoặc "chỉ học để biết" 1 library, 1 framework, 1 platform thì ngôn ngữ (language) sử dụng để build

@ndangnguyen
ndangnguyen / Class.java
Created March 24, 2020 02:29 — forked from arifix/Class.java
Movable/Draggable Floating Action Button (FAB)
package com.example;
import android.content.Context;
import android.support.design.widget.FloatingActionButton;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class MovableFloatingActionButton extends FloatingActionButton implements View.OnTouchListener {
@ndangnguyen
ndangnguyen / Permission.java
Last active May 13, 2020 08:25
RxPermissions3
package mi.omiseno.smartphoneorder.utils.rxPermissions3;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.functions.BiConsumer;
import io.reactivex.rxjava3.functions.Function;
import io.reactivex.rxjava3.functions.Predicate;
public class Permission {
public static boolean isNetworkConnected() {
final ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
if (Build.VERSION.SDK_INT < 23) {
final NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null) {
return (ni.isConnected() && (ni.getType() == ConnectivityManager.TYPE_WIFI || ni.getType() == ConnectivityManager.TYPE_MOBILE));
}
@ndangnguyen
ndangnguyen / Adapter.java
Created October 1, 2019 02:24 — forked from imhardiklakhani/Adapter.java
Sticky Header Recyclerview in Android
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class Adapter extends RecyclerView.Adapter<Adapter.Holder> {
@ndangnguyen
ndangnguyen / keybase.md
Created September 10, 2019 17:59
keybase.md

Keybase proof

I hereby claim:

  • I am ndangnguyen on github.
  • I am nguyendan (https://keybase.io/nguyendan) on keybase.
  • I have a public key ASC5MTcGIvAC2qihN3ZWIGUsEhjZYhDv_JD2A-uHFB6uoQo

To claim this, I am signing this object:

@ndangnguyen
ndangnguyen / cloudSettings
Created April 7, 2019 07:02
Visual Studio Code Settings Sync Gist
{"lastUpload":"2019-04-07T07:02:33.755Z","extensionVersion":"v3.2.7"}
@ndangnguyen
ndangnguyen / cloudSettings
Created January 23, 2019 03:33
Visual Studio Code Settings Sync Gist
{"lastUpload":"2019-01-23T03:33:20.773Z","extensionVersion":"v3.2.4"}