Skip to content

Instantly share code, notes, and snippets.

View iRYO400's full-sized avatar
🎄
Focusing

Akbolat Sadvakassov iRYO400

🎄
Focusing
  • Almaty, Kazakhstan
View GitHub Profile
@iRYO400
iRYO400 / a_snippet1.txt
Last active July 17, 2018 07:28
A-snippet #1 - Smoothing Marker moving in Google Maps
/**
* Smooth moving my location marker arrow
* @param marker - marker itself
* @param newLatLng - new location to move
*/
private fun changePositionSmoothly(marker: Marker?, newLatLng: LatLng) {
if (marker == null) {
return
}
val animation = ValueAnimator.ofFloat(0f, 100f)
@iRYO400
iRYO400 / a_snippet1_1.txt
Last active July 17, 2018 07:28
A-snippet #1 - Smoothing Marker rotating in Google Maps
/**
* Smooth rotating my location marker arrow
* @param marker - marker itself
* @param newBearing - new direction to rotate
*/
private fun changeBearingSmoothly(marker: Marker?, newBearing: Float) {
if (marker == null) {
return
}
val animation = ValueAnimator.ofFloat(0f, 100f)
@iRYO400
iRYO400 / a_snippet2
Created July 17, 2018 07:41
A-snippet #2 - Relative time converting
const val TIMESTAMP_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" // eg. 2018-04-01T04:20:25.434Z
/**
* Time converting from any timestamp pattern to "5 minutes ago", "1 day ago", etc.
*/
fun convertTime(timestamp: String): String {
val mDataFormat: DateFormat = SimpleDateFormat(TIMESTAMP_PATTERN, Locale.ENGLISH)
return try {
val date = mDataFormat.parse(timestamp)
val relativeDateStr = DateUtils.getRelativeTimeSpanString(date.time, Calendar.getInstance().timeInMillis, DateUtils.MINUTE_IN_MILLIS)
@iRYO400
iRYO400 / a_snippet3
Created July 24, 2018 04:50
A-snippet #3 Drawable to BitmapDescriptor
private fun bitmapDescriptorFromVector(vectorResId: Int, context: Context): BitmapDescriptor {
val vectorDrawable = ContextCompat.getDrawable(context, vectorResId)
vectorDrawable!!.setBounds(0, 0, vectorDrawable.intrinsicWidth, vectorDrawable.intrinsicHeight)
val bitmap = Bitmap.createBitmap(vectorDrawable.intrinsicWidth, vectorDrawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
vectorDrawable.draw(canvas)
return BitmapDescriptorFactory.fromBitmap(bitmap)
}
@iRYO400
iRYO400 / Which one should I do?
Created January 24, 2019 08:28
Микромомент в юнит тестировании
public void checkCalculation() {
Product product = new Product(10, 10);
String totalSum = model.calculateSum(product);
String expected = "100 руб."; // #1 способ
assertThat(totalSum).isEqualTo(expected); // #1 способ
int expectedValue = getString(R.string.total_sum, 100); // #2 способ
assertThat(totalSum).isEqualTo(expectedValue); // #2 способ
@iRYO400
iRYO400 / [Robolectric-4.0] Assert views
Last active February 4, 2019 10:11
#robolectric #robolectric4
// Backgrounds of views
Drawable currentDrawable = textView.getBackground();
Drawable expectedDrawable = getApplicationContext().getDrawable(R.drawable.background_item_chip_yellow);
assertThat(shadowOf(currentDrawable).getCreatedFromResId()).isEqualTo(shadowOf(expectedDrawable).getCreatedFromResId());
// Colors of TextView
int expectedColor = ContextCompat.getColor(getApplicationContext(), R.color.text_blue);
assertThat(textView.getCurrentTextColor()).isEqualTo(expectedColor);
// Colors of Drawable backgrounds
// Spinner. Click->Select->Check
YourObject expectedText = YourObject.PIECE; // for example, if it's ENUM
onData(allOf(is(instanceOf(YourObject.class)), is(expectedText))).perform(click());
onView(withId(R.id.spinner)).check(matches(withSpinnerText(containsString(expectedText.name()))));
// Spinner. Click on Spinner by id-> then Select exact what you need by specifying expectedText
onView(withId(R.id.spinner))
.perform(click());
"(?=.*[a-z].*)(.*[A-Z].*)" --- Must contain at least one CAPITAL and one non-capital
".*\\d.*" --- Must contain digits
...
package com.kodelabs.boilerplate.domain.executor.impl;
import com.kodelabs.boilerplate.domain.executor.Executor;
import com.kodelabs.boilerplate.domain.interactors.base.AbstractInteractor;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@iRYO400
iRYO400 / ConnectivityMonitor.kt
Created April 30, 2020 09:41
Check Internet Connection [API21+][API29+ supported] Lifecycle aware
import android.content.Context
import android.content.Context.CONNECTIVITY_SERVICE
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.OnLifecycleEvent