Skip to content

Instantly share code, notes, and snippets.

View gbzarelli's full-sized avatar
Coding...

Guilherme Biff Zarelli gbzarelli

Coding...
View GitHub Profile
@gbzarelli
gbzarelli / CollapsingToolbarTabLayout.kt
Created April 25, 2018 17:40
Collapsing toolbar when scrolling list using ViewPager with TabLayout
class ListSelectorActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_list_selector)
setSupportActionBar(toolbar)
createViewPageAdapter()
fab.setOnClickListener {
@gbzarelli
gbzarelli / ChatAdapter.kt
Last active April 25, 2018 18:28
Android - How to create a chat balloon with a simple XML drawable (Android – Como criar um balão de chat com um simples drawable XML)
class ChatAdapter(context: Context,
private val messages: List<ObMensage>,
private val onClick: RecyclerViewAdapter.RecyclerAdapterListener<ObMensage>?) :
RecyclerView.Adapter<ChatAdapter.Holder>() {
private val inflater: LayoutInflater = LayoutInflater.from(context)
private val textSending: String = context.getString(R.string.status_msg_sending)
private val textSent: String = context.getString(R.string.status_msg_sent)
private val textRead: String = context.getString(R.string.status_msg_read)
@gbzarelli
gbzarelli / GpxMath.kt
Created June 18, 2018 13:03
Code to calculate gain and loss of altimetry.
object GpxMath {
fun calculateGain(indexStartTrkPt: Int, trkPts: List<TrkPt>): Pair<Double, Double> {
var constMediaAccuracy = 0.0
val size = trkPts.size
for (i in 0 until size) {
constMediaAccuracy += trkPts[i].accuracy
}
constMediaAccuracy /= size
@gbzarelli
gbzarelli / LifecycleObserver.kt
Created July 5, 2018 13:30
Como detectar se a aplicação está minimizada ou não (How to detect Android application in background or foreground events)
/**
Doc: https://developer.android.com/reference/android/arch/lifecycle/ProcessLifecycleOwner
belongs to Maven artifact "android.arch.lifecycle:extensions:1.1.1" (include in your dependences)
*/
class MyApplication : Application(), LifecycleObserver {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
@gbzarelli
gbzarelli / IntentCategoryDefault.kt
Created July 5, 2018 19:59
How to get the package name of current launcher in android? - How to get the package name of default intent category?
fun getDefaultPackageNameOfLauncher():String{
PackageManager localPackageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
return localPackageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;
}
@gbzarelli
gbzarelli / NotificationStartActivity.txt
Last active September 24, 2018 14:12
Intent.FLAG_ACTIVITY_CLEAR_TOP on Notification
val intent = Intent(ChatActivity.ACTION_VIEW)
intent.putExtra(ChatActivity.PARAM_OBJECT, group)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
val pendingIntent = PendingIntent
.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT)
// Activities: A(Main), B e C - O codigo acima gera uma nova activity B na mesma task, excluindo a B, C anterior.
// Manifest: Main activity: android:launchMode="singleTask"
@gbzarelli
gbzarelli / SwipeRefreshLayout.kt
Created July 26, 2018 16:12
SwipeRefreshLayout
protected SwipeRefreshLayout swipe;
swipe = layout.findViewById(swipeId);
swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
sendRequest();
}
});
@gbzarelli
gbzarelli / ProvidingUpNavigation.kt
Last active July 26, 2018 18:24
Providing Up navigation from Notification
// https://developer.android.com/training/implementing-navigation/ancestral
override fun onSupportNavigateUp(): Boolean {
navigationUp(false)
return true
}
override fun onBackPressed() {
navigationUp(true)
}
@gbzarelli
gbzarelli / FunctionalInterfaces.kt
Last active October 9, 2018 14:10
Sample Kotlin Functional Interface
/**
* A interface funcional é declarada no método:
* myFuncionalInterface: (Int,String) -> Unit
* A interface acima tem como parametro um Int e uma String, ele é chamado como se fosse um método pelo proprio nome:
* myFuncionalInterface(1,"Sucesso")
*/
fun methodFuncionalInterface(username: String, password: String, myFuncionalInterface: (Int,String) -> Unit) {
...
myFuncionalInterface(1,"Sucesso")
...
@gbzarelli
gbzarelli / ThreadAwaitTermination.java
Last active March 22, 2024 14:34
Await termination many threads
public static void main(String[] args) throws InterruptedException {
ExecutorService pool = Executors.newFixedThreadPool(2);
pool.submit(() -> {
try {
Thread.sleep(5000);
} catch (Exception e) {
}
System.out.println("5s");
});
pool.submit(() -> {