Android animation behind other views - android

Developing for android I need a translate animation. That was easy, but I want the animation to go behind the other views. How can I achieve that?
setZAdjustment(Animation.ZORDER_BOTTOM) does not work. It cannot be that hard...

I had the same problem in a RelativeLayout with an animated ImageView.
Defining/adding my animated View in the first place in/to the RelativeLayout and then the other views helped me.

How I solved this problem was to implement my own android.view.animation.Animation class, and overrride the applyTransformation() method. From this method I set a few of my own custom drawing variables, (X offset, etc.) and then called invalidate() on the view being animated. Note that my view as a custom view and I had all my drawing done in onDraw.

Related

Animating a group of children in a viewgroup

I'm working on a custom ViewGroup.
This ViewGroup has a bunch of children. I need to animate a few and change their position. I understand that Android animations move just the bitmap and not the real object. I've been trying to MOVE them by following various resources but have failed.
What I'm doing with ViewGroup so far:
Measure children and the ViewGroup
Position children in onLayout
What I'm trying to do further
Use a custom animation to move a small subset of the children. I'm using a custom Animation object because I need to move a bunch of Views and I'm applying translationX on all of them together. The other option that I know is to start a separate Animation on all of them and the thought of which makes me think it's gonna be unoptimized.
Problem
Views animate fine, but their real position remains unchanged. So the next time I'm trying to do the same kind of animation, but on the new co-ordinates, it doesn't work. Because, their positions haven't updated.
What did I try
Use onAnimationEnd to layout each of the children to the new left, top, right and bottom position. All views vanished
On onAnimationEnd, reset translationX to zero and then start re-positioning the views. No effect of calling view.setTranslationX(0f)
Can someone please help me with the correct way of doing this? Thanks
when animating call layout() on your child Views

Android Animation - Button stays clickable

I am making a game in which I have 5 buttons, looking like clouds, falling from the "sky".
That means that when my activity starts, 'clouds' cannot be seen, since the marginTop is set to -100dp.
From that position they start falling down untill they get lost on the bottom side of the screen.
The thing is, I need those buttons to be clickable, during the process of animation.
So far, I found some documentation about how I can make the buttons clickable AFTER the animation ends. But I don't need that. I need to be able to click on the buttons through the animation time itself.
NOTE: I need something that works with versions before 3.0.
Anybody has any link to documentation or some example or anything ?
After doing some research, I found out that there are two types of animations:
View Animation and Property Animation.
The view animation can only animate View objects. It also lack a variety of animations, since it can do only stuff as scale, rotate, move... It cannot change background color, for example.
Also, the disadvantage of the View Animation is that it only change the position of where the View object is DRAWN. Physically, it still stays in the same position.
That's why the button is un-clickable, after the View Animation is finished upon it.
Property Animation, in the other hand, can animate both View and non-View objects and it doesn't have constraints as the View Animation.
When objects are moved, for example, with the property animation, they are not just drawn on some other position on the screen, but they are actually MOVED there.
Now, Property Animation is a lot more complex to write than the View Animation, so if you don't really need all the advantages of the Property Animation, it is suggested to use View Animation.
Source:
Property vs View Animation
Tutorial and SupportLybrary up to API 1:
nineoldandroids
You can change the buttons to imageViews and then do
imageView.setOnClickListener(myListener)
then set myListener to do whatever you previously wanted to happen on the buttons onClick. Your activity will have to implement OnClickListener
Added bonus: you can make the images look like clouds :)

Alternative to Translate Animation

I finally came to know that when using translate animation, the button onclick listener won't work.
This is the link to the full description of my problem
Now I would like to know what is the alternative options to try instead of Translate Animation.
You can use your own animation using a thread.
I can give you an example.
Put your view to animate inside a Relative Layout.
Then start a thread which is running a loop with specific delay time and then set the margin of the view that you need to animate with different values..
This will give you the effect of translate animation and the view will be intractable also.

Animated sequence of views

I want to implement view like this:
Inside of this view all children has to be animated while scrolling through them.
I am going to implement it for android 2.x
My first thought was to create custom view extending FrameLayout and manage children views inside programatically, detect gestures and move to next/prev child view animating them (probably scale and transition animation)
What can you advice me, how to achive that, maybe there is an open source project that can help me?
Finally I got what I wan't, there is no simple answer on this question, but simply saying you have to all the work that android UI framework usually does: calculate position of items, add them in proper order, apply different effects (translate, scale, fade out) and draw it on canvas.
To achiev this I follod this extremely useful tutorial (thanks to author)
http://blogs.sonyericsson.com/wp/2010/05/20/android-tutorial-making-your-own-3d-list-part-1/
I am thinking to add my solution somewhere on github once I fix all bugs and make it completelly reusable.

Rendering absolutely positioned sprites over a regular Android layout

I've got a standard RelativeLayout laying out my Buttons and TextAreas. What I want to do now is be able to draw various sparks, flying cows etc. at arbitrary places on the screen on top of the whole thing. What's the best way to do this? Should I override onDraw() on the containing View and draw after calling super.onDraw()? Or is there some better way of drawing a layer on top?
You'll probably want to put your Relative layout and a custom view which isn't focusable and doesn't consume motionevents inside a FrameLayout, then override OnDraw in that custom view. That way you can call invalidate() on that view without making Android redraw everything else.

Categories

Resources