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 / ProductDetails.json
Created February 23, 2023 16:50
ProductDetails
{
"productId": "com.your.product.id",
"type": "subs",
"title": "Subscription title",
"name": "Subscription name",
"description": "Subscription description",
"localizedIn": [
"en-IN"
],
"skuDetailsToken": "AE*****83",
@iRYO400
iRYO400 / Cache.java
Last active November 24, 2022 08:38 — forked from nikartm/Cache.java
Android. Example how to save an image file in the App cache and get Uri for it. The Image will not be saved in a device gallery, only in an internal App cache.
package com.github.example;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.core.content.FileProvider;
@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
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;
"(?=.*[a-z].*)(.*[A-Z].*)" --- Must contain at least one CAPITAL and one non-capital
".*\\d.*" --- Must contain digits
...
// 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());
@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
@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 / 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 / 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)