Skip to content

Instantly share code, notes, and snippets.

View rezaiyan's full-sized avatar
👋

Ali Rezaiyan rezaiyan

👋
View GitHub Profile
@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 (alirezaiyann@gmail.com)
* @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:
@rezaiyan
rezaiyan / MaxSubArray.java
Last active April 1, 2019 07:06
Maximum sum of a sub-array
//Given an integer array nums,
//find the contiguous subarray (containing at least one number)
//which has the largest sum and return its sum.
class Solution {
public int maxSubArray(int[] nums) {
if (nums.length == 1)
return nums[0];
int sum = 0;