Skip to content

Instantly share code, notes, and snippets.

View rezaiyan's full-sized avatar
👋

Ali Rezaiyan rezaiyan

👋
View GitHub Profile
@rezaiyan
rezaiyan / Degree.java
Created July 4, 2020 20:37
Array degree algo
public static String codeHere(String inputData) {
// Use this function to write your solution;
String[] arrayInfo = inputData.split("\n");
int size = Integer.parseInt(arrayInfo[0]);
int[] lenghsArray = new int[size];
String[] stringArray = arrayInfo[1].split(" ");
List<Integer> subArray = new ArrayList<>();
@rezaiyan
rezaiyan / Projection.java
Last active April 19, 2020 04:53
EPSG 4326 , EPSG 3857 converter
private static double EARTH_RADIUS = 6378137.0;
public static LatLng to4326(Wgs84 wgs84) {
double lat = Math.toDegrees(Math.atan(Math.exp(wgs84.getY() / EARTH_RADIUS)) * 2 - Math.PI/2);
double lng = Math.toDegrees(wgs84.getX() / EARTH_RADIUS);
return new LatLng(lat, lng);
}
public static Wgs84 toWgs84(LatLng latLng) {
double x = Math.toRadians(latLng.longitude) * EARTH_RADIUS;
@rezaiyan
rezaiyan / SharedViewModel.java
Last active November 11, 2019 08:01
This is a simple example of a shared viewmodel
class SharedViewModel extends ViewModel {
public MutableLiveData<String> liveData = new MutableLiveData<>();
}
class parentFragment {
sharedVm = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
@rezaiyan
rezaiyan / BObserver.java
Last active October 14, 2019 16:28
Binding Observer with LiveData
public class BObserver<T> extends DisposableObserver<T> {
private StateLiveData<T> liveData;
public BObserver(StateLiveData<T> liveData) {
this.liveData = liveData;
}
@Override
@rezaiyan
rezaiyan / OnTouchListener.java
Created June 11, 2019 08:07
This is a sample to swipe a layout to left and right
import android.view.MotionEvent;
import android.view.View;
/**
* @author ali ([email protected])
* @since 6/11/19 12:24 PM.
*/
public class OnTouchListener implements View.OnTouchListener {
import android.annotation.SuppressLint
import android.view.MotionEvent
import android.view.View
import android.view.View.OnTouchListener
import java.util.*
/**
* Detects left and right swipes across a view.
*/
@rezaiyan
rezaiyan / PrettyLogger.kt
Created April 26, 2019 16:16
Pretty Json Logger
//Reference//
//https://github.com/orhanobut/logger
//https://github.com/JakeWharton/timber
// 1- Add this initializations to the oncreate method of Application class
Logger.addLogAdapter(AndroidLogAdapter())
Timber.plant(Timber.DebugTree())
// 2- Create a snippet to detect log is a json format (I used a string extention function)
fun String.isJson(): Boolean {
@rezaiyan
rezaiyan / build.gradle
Created April 24, 2019 11:42
Androidx conflict
/* packagingOptions {
exclude 'META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'
exclude 'META-INF/androidx.appcompat_appcompat.version'
exclude 'META-INF/androidx.customview_customview.version'
exclude 'META-INF/androidx.legacy_legacy-support-core-ui.version'
exclude 'META-INF/androidx.drawerlayout_drawerlayout.version'
exclude 'META-INF/androidx.interpolator_interpolator.version'
exclude 'META-INF/androidx.legacy_legacy-support-core-utils.version'
exclude 'META-INF/androidx.slidingpanelayout_slidingpanelayout.version'
exclude 'META-INF/androidx.swiperefreshlayout_swiperefreshlayout.version'
@rezaiyan
rezaiyan / DrawableToBitmap.kt
Created April 21, 2019 10:08
A snippet code to do convert drawable to bitmap
fun Drawable.toBitmap(): Bitmap {
val bitmap = if (this.intrinsicWidth <= 0 || this.intrinsicHeight <= 0) {
Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888) // Single color bitmap will be created of 1x1 pixel
} else {
Bitmap.createBitmap(this.intrinsicWidth, this.intrinsicHeight, Bitmap.Config.ARGB_8888)
}
if (this is BitmapDrawable) {
if (this.bitmap != null) {
return this.bitmap
@rezaiyan
rezaiyan / MergeIntervals.java
Last active April 5, 2019 10:38
Given a collection of intervals, merge all overlapping intervals.
/*
Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2: