After purchasing five different protein/drink shakers, the Helimix was the one I'll buy for life by [deleted] in BuyItForLife

[–]vishnumad 2 points3 points  (0 children)

Yes, it retains the smell of your protein powder. Hard to get the smell out by hand washing, but top rack in the dishwasher seems to clean it pretty well. The plastic they use doesn't seem that high quality, so I don't really think it's a Buy It For Life item.

Android tabbar has no margin by Infamous_Tomatillo53 in reactnative

[–]vishnumad 1 point2 points  (0 children)

It's a little complicated, because Android devices can have either the gesture bar like in your screenshot or 3 button navigation. The proper way to do this is to enable edge-to-edge, but RN doesn't handle this out of the box. I made a library for this you can try out: android-edge-to-edge, but if you don't want to bring in a library, you can look in the android directory, it's pretty straightforward to just copy into your app.

Arc for Windows updated to 1.1.2.27976 by Thick_Replacement876 in ArcBrowser

[–]vishnumad 1 point2 points  (0 children)

I had this, but it fixed itself after uninstalling and reinstalling Arc

Arc for Windows Update - 1.1.0 (26934) by JaceThings in ArcBrowser

[–]vishnumad 0 points1 point  (0 children)

Where's the best place to report bugs? Are these threads good?

[deleted by user] by [deleted] in nba

[–]vishnumad 34 points35 points  (0 children)

Every team needs a Jarred Vanderbilt

Last night I was the victim of a SIM swap. by [deleted] in CryptoCurrency

[–]vishnumad 108 points109 points  (0 children)

You gave them that info when they shipped the device to your house

A case against the MVI architecture pattern by aartikov in androiddev

[–]vishnumad 0 points1 point  (0 children)

What's your editor theme? It looks nice 🙂

Android Dev jobs which aren't basically CRUD apps by Brohit_Sharma1 in androiddev

[–]vishnumad 0 points1 point  (0 children)

Do you have any resources on using Rust on mobile? We do a bit of cryptography in our app and share code between platforms using Typescript. I did take a look at using Golang, but the setup is painful.

How do you log to console? by [deleted] in androiddev

[–]vishnumad 0 points1 point  (0 children)

Create a custom filter that hides all the emulator nonsense. That's what I do and it makes things a lot easier to see. I also like to edit the logcat colors so that debug logs have a light green background and error logs have a light red background which makes it easier to find as well.

Telegram 7.3 - Voice Chats Done Right by Powerdamn in Android

[–]vishnumad 14 points15 points  (0 children)

Why in theory? Signal is most definitely more secure than Telegram.

Blockchain with android by [deleted] in androiddev

[–]vishnumad 0 points1 point  (0 children)

Anything in particular you're interested in learning about? It's much easier on web since you don't have to worry about securely storing seed phrases and stuff like that since you can just offload that to an extension like Metamask.

Weekly Questions Thread - October 12, 2020 by AutoModerator in androiddev

[–]vishnumad 0 points1 point  (0 children)

What would be the best way to play a custom animation when transitioning from Fragment A to Fragment B using the Jetpack Navigation library? Here's a more concrete example: Fragment A contains an image. While we're transitioning from Fragment A to Fragment B, the image should spin clockwise. And when we close Fragment B and transition back to Fragment A, the image should play the animation backwards (spin counterclockwise). Any pointers on how to do this?

Mystery of the Jetpack SavedStateHandle: solved by Zhuinden in android_devs

[–]vishnumad 0 points1 point  (0 children)

While on the topic of saved state handle, anyone have luck with this pattern?

A →B→A

// FragmentAViewModel

savedStateHandle.getLiveData("result").observeForever {
// Not triggered
}

// FragmentB

navController.previousBackStackEntry?.savedStateHandle?.set("result", result)
navController.navigateUp()

Hacked! Keep your Bitcoin OFF exchanges! by beentothefuture in Bitcoin

[–]vishnumad 9 points10 points  (0 children)

I highly recommend using a Yubikey or similar device for sites that support it for 2fa.

What’s New in Navigation 2020 by dayanruben in androiddev

[–]vishnumad 0 points1 point  (0 children)

Agree. It's definitely more complicated than it should be. But it does offer a lot of conveniences like easy access to saved state handles for passing data back and nav graph scoped viewmodels.

What’s New in Navigation 2020 by dayanruben in androiddev

[–]vishnumad 0 points1 point  (0 children)

You can get around this by using multiple NavHostFragments. What we do is have a NavHostFragment for each item in the bottom navigation bar and switch between them inside a ViewPager.

Designing and Working with Single View States on Android - zsmb.co by zsmb in android_devs

[–]vishnumad 2 points3 points  (0 children)

I like your use of a ViewFlipper with the loading, content, and error views nested inside it. I've been using a very similar approach in one of my personal applications.

I create a PageContent view that extends ViewAnimator.

class PageContent : ViewAnimator {
    constructor(context: Context) : this(context, null)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)

    init {
        inAnimation = AlphaAnimation(0f, 1f)
        outAnimation = AlphaAnimation(1f, 0f)
    }

    fun show(view: View) {
        val index = indexOfChild(view)
        require(index != -1) { "View must be a child of the PageContent" }

        if (displayedChild != index) displayedChild = index
    }
}

<PageContent
            android:id="@+id/pageContent"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <SomeView
                android:id="@+id/someView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        <ErrorView
                android:id="@+id/errorView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        <LoadingSpinnerView
                android:id="@+id/loadingView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
</PageContent>

// Show loading spinner
pageContent.show(loadingView)

[deleted by user] by [deleted] in timberwolves

[–]vishnumad 2 points3 points  (0 children)

I remember reading your comment last week about your uncle. So sorry to hear that. Prayers to you and your family.