Take the following sentence:
I have been learning for two hours.
Can this imply that I am not learning now? I'm tired and I want this sentence to show the effect that learning has on me.
Or it is better to say "I have learned for two hours"?
Use:
I have been learning for two hours.
The second sentence, "I have learned for two hours," is not specific with regards to timeframe. You could have learned for two hours earlier today, yesterday, or last month. "I have been learning" makes it clear that the action of learning began in the past, and continued until right now. What the sentence does not specify is whether you will keep learning in the future. To make that clear, you need to give context, for instance:
I have been learning for two hours, and I'm taking a break.
Compare that with the following:
I have been learning for two hours, and I need a break.
The first implies that you are not learning at the moment, while the second does. Bottom line, do not use "I have learned," and rather come up with a specific sentence incorporating the phrase "I have been learning."