Skip to content

Instantly share code, notes, and snippets.

View alexzaitsev's full-sized avatar
:octocat:

Alex Zaitsev alexzaitsev

:octocat:
View GitHub Profile
@alexzaitsev
alexzaitsev / MaterialShapeGenerator.java
Created March 21, 2015 20:46
Android Material Shape Generator
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import pro.alex_zaitsev.currency.R;
@alexzaitsev
alexzaitsev / PhotosUriResolver.java
Last active January 18, 2024 21:13
Get image/video file path from New Google Photos app Uri
if (isNewGooglePhotosUri(uri)) {
String pathUri = uri.getPath();
String newUri = pathUri.substring(pathUri.indexOf("content"), pathUri.lastIndexOf("/ACTUAL"));
return getDataColumn(context, Uri.parse(newUri), null, null);
}
public static boolean isNewGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.contentprovider".equals(uri.getAuthority());
}
@alexzaitsev
alexzaitsev / Translit.java
Last active September 2, 2020 07:50
Transliteration from English to Russian
package com.yalantis.util;
import android.text.TextUtils;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Aleksandr on 05.10.2015.
*/
@alexzaitsev
alexzaitsev / Activity.java
Last active August 17, 2021 08:36
Android popup error for TextView without focus
protected ErrorPopupHelper errorHelper = new ErrorPopupHelper();
mEditTextEmail.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (!hasFocus) {
if (!ValidatorUtil.isValidEmail(getEmail())) {
errorHelper.setError(mEditTextEmail, R.string.email_validation_error);
}
}
@alexzaitsev
alexzaitsev / MainActivity.java
Created November 25, 2015 09:31
ContextMenu in Fragment example
package com.yalantis.contextmenu.sample;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
Parse.Cloud.define("removeOldAdverts", function(request, response) {
var today = new Date();
today.setMinutes(0);
today.setSeconds(0);
today.setMilliseconds(0);
var query = new Parse.Query("Advert");
//query.lessThan("createdAt", today);
query.find({
@alexzaitsev
alexzaitsev / screenrecord.sh
Created December 13, 2016 16:59 — forked from tasomaniac/screenrecord.sh
Screen Record for Android
#!/bin/sh
set -e
if [ -z "$1" ]; then
shot_path=$(date +%Y-%m-%d-%H-%M-%S).mp4
else
shot_path="$*"
fi
@alexzaitsev
alexzaitsev / drawable-shadow.xml
Created February 13, 2017 12:29
android manual shadow
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#44000000"
android:startColor="@android:color/transparent" />
</shape>
@alexzaitsev
alexzaitsev / app.js
Last active August 1, 2017 08:50
How To Write Reusable and Testable Code with Microsoft Bot Framework
const bot = new builder.UniversalBot(connector);
bot.dialog(‘/’, [
(session, args, next) => {
if (session.userData.languageSet) {
next();
} else {
session.beginDialog(‘welcome:/pickLocale’);
}
},
...
@alexzaitsev
alexzaitsev / welcome.js
Last active June 6, 2017 10:36
How To Write Reusable and Testable Code with Microsoft Bot Framework
"use strict";
const builder = require("botbuilder");
const library = new builder.Library('welcome'); // welcome is a library name
const LANGUAGES = {'English': 'en', 'Русский': 'ru'};
library.dialog('/pickLocale', [
(session) => {
// Prompt the user to select their preferred locale
builder.Prompts.choice(session, "What language do you prefer?", Object.keys(LANGUAGES).join("|"));