The first major problem that I noticed with your animation is that you have one leg move while the other doesn't. This never happens while walking and it causes your animation to look stiff and awkward. You also had frames in where he was standing with both feet even like he was standing still. You do not want those frames in a walk animation. It looks like you probably drew him idle then decided to animate from that to make him walk which is okay but you cant leave the idle frame unchanged his standing frame has to go.
I first ripped out those frames that had one of the legs not move since the last frame and narrowed the animation down to 4 keyframes. You can get really smooth animation with just 4 frames and you can always add more if you need them.
Here you can see we have just 4 frames. for each leg there is : landed, recede, lift, and midair. Still looks a little stiff huh? (except for that beautiful flowing hair
)
The next step is to add some head bounce. I dropped the head and arms one pixel the frame right after the landing foot. This adds a little delay in between the weight of the foot hitting the ground and then the following force of his body. I also tried to add some more natural movement to his shirt. When his leg lifts up his shirt gets pulled up on that side. (now that I think about it maybe he wasn't supposed to have a baggy shirt but that's what it looked like and its fun to animate so that's what he will have in this edit) This also helps add definition and volume to his leg a bit I think.
Now we have the arms moving. Each arm moves opposite its corresponding leg. I also had the arm moving back fall into more shadow giving the animation more depth. I also made his little gun thing get a bit bigger when his arm is in front and then when it receded I changed red color to a darker shade.
Finally we add in the motion of his shirt moving back and forth. His shirt should pull forward on the side that his arm is reaching forward and recede on the side that his arm is receding. I added in a little secondary motion by having the last button not reach its full movement forward peak until a frame after the arm is forward. This gives it a bit of a bounce but you have to make sure you dont over-do it.
COLOR EDIT:
Just quickly editing your colors. The skin tone could be greatly improved just by sliding the hue a bit more toward red. This gives him a more "alive" flesh color and also matches the color palette better. One thing that really stuck out to me was the harsh blue color mixed in with the browns and yellows. I noticed that most of your colors were full saturation. When you want blue pants, instead of just sliding the hue to blue try desaturating some colors and try and get a nice balance of color.
Hope this helps. I think you should keep it down to 4 frames it will save you a lot of time animating.
(I realized I forgot to animate the hair correctly. Oh well you can figure that part out)