N.S.
Sounds like he's feeling out of control, so he's trying to control things in the only way he can!
Are there some ways you can let him have control? Could you let him wear whatever he wants? Could you let him eat anything he wants for dessert?
He might just need a "chill out" day. I've gotten at my wits end with fighting, contrariness, etc. and I finally gave a "chill out" day. I let her do whatever she wanted. She slept as long as she wanted. I let her wear whatever she wanted. I let her eat whatever she wanted (cupcakes for breakfast). As long as she wasn't destroying anything I let her do it. She just watched TV until that got boring. Then she was hungry and decided suddenly she wanted healthy food! I didn't engage with her, and I didn't do anything with her.
By mid-afternoon she had suddenly put on nice clothes, combed her hair, asked for a nutritious meal and wanted to go to the park. The week before I couldn't have gotten her to do ANY of those things and all she wanted was to watch TV.
Once I removed the barrier she suddenly wanted to do the right thing. It could work with your 3.5 year old, but you'd probably need a few more rules than I had. Still, see if letting him have his way in some things helps. A heavier hand isn't working, maybe a lighter hand is the answer?