Skip to content

Instantly share code, notes, and snippets.

View RareScrap's full-sized avatar

Yuri RareScrap

View GitHub Profile
import android.content.Context
import java.io.File
import java.io.FileOutputStream
import java.io.PrintWriter
import java.io.StringWriter
fun Context.logToFile(str: String, filename: String = "LOG.txt") {
val file = File("$filesDir${File.separator}$filename")
if (!file.exists()) file.createNewFile()
FileOutputStream(file, true).bufferedWriter().use { out -> out.appendLine(str) }
@RareScrap
RareScrap / AttrsDumb.kt
Created August 6, 2020 17:54
Дамперы AttributeSet'а и TypedArray'я
/**
* Выводит в лог удобочитаемое представление AttributeSet'а
*/
fun AttributeSet.dump(ctx: Context) {
Log.i("AttributeSetDump", "For element at $positionDescription")
for (i in 0 until attributeCount) {
val attrName = this.getAttributeName(i) ?: "null"
var attrValue = this.getAttributeValue(i) ?: "null"
if (attrValue.startsWith("@")) {
attrValue = ctx.resources.getResourceEntryName(attrValue.substring(1).toInt())
@RareScrap
RareScrap / GSON_mField.java
Created May 16, 2020 07:20
Позволяет GSON'у толкать поля с переменные с префикса "m"
public static class AndroidFieldNamingPolicy implements FieldNamingStrategy {
private static final String JSON_WORD_DELIMITER = "_";
@Override
public String translateName(final Field f) {
if (f.getName().startsWith("m")) {
return handleWords(f.getName().substring(1));
}
else {
throw new IllegalArgumentException("Don't know how to handle field not starting with m prefix: " + f.getName());
@RareScrap
RareScrap / gist:d032aab61d010117743994df1976453c
Created June 3, 2019 08:54
Коллекция идиотских (но местами интересных) способ отслеживания изменения инвентарей в Minecraft 1.7.10
package ru.rarescrap.simpleweightsystem;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.*;
import net.minecraft.item.Item;
import net.minecraft.world.World;
@RareScrap
RareScrap / gist:527b3bc531811600dd7bd65a44e62cd1
Last active December 7, 2018 08:54
Замер производительности при удалении элементов из ArrayList
package javaapplication16;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import javafx.print.Collation;
/**
@RareScrap
RareScrap / DefaultItemAnimator.java
Created June 15, 2017 02:51
DefaultItemAnimator с подробным описанием (дополняется время от времени)
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@RareScrap
RareScrap / ShoppingCartFragment.java
Last active June 14, 2017 05:22
Как узнать скорость "задвигания" элеметов, закрывающих пустоту после удаления элемета из середины списка (Проект TennoSushi)
// Отвечает за скорость "задвигания" элеметов, закрывающих пустоту после удаления элемета из середины
// recyclerView.getItemAnimator().setMoveDuration(6000);
// int d = recyclerView.getItemAnimator().getMoveDuration();
@RareScrap
RareScrap / FoodItemRecyclerViewAdapter.java
Created May 2, 2017 07:41
Хорошие и плохие способы задания айдишников элементам RecyclerView
package com.webtrust.tennosushi.adapters;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@RareScrap
RareScrap / card_list_item.xml
Created March 23, 2017 08:57
Пример процентной разметки с использованием weight
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:myapp="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<fragment
@RareScrap
RareScrap / MainActivity.java
Created March 15, 2017 07:05
Сокрытие клавиатуры
// Клавиатура закрывается при касании кнопки FAB
private void dismissKeyboard(View view) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}