摆在眼前的困难(如果你不能认识到,请再去研究一下):
1.widget能支持的控件及函数屈指可数
2.widget不支持快速刷新
3.widget设置的时候对内存大小有要求
一线曙光:
搜遍了国内外的论坛结论确实让人沮丧,都说是不可能的。但我仔细看了看程序的每一部分,发现了一个突破口--LayoutAnimation,在布局里面的Layout?没错!就是它!当一个布局被载入的时候,系统会自动播放已经设置好的某种Layout动画元素。
有了方向就有了新的困难(嘿嘿,这是自然规律):
1.如何让Layout图片变成可以随意设置?Layout背景只能在布局中定义。
答:把一个image放在一个LinearLayout里面就能通过设置image的方法来控制动画画面啦
2.LayoutAnimation的规律是播放完动画过程变成全部显示的状态,那本来要隐藏的画面不就露馅了?
答:我卡--住它!
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="0" android:toYDelta="100%"
android:toXDelta="0" android:duration="1500" />
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="6000000"></alpha>
</set>
看看上面这段定义:
translate 动作将原来的画面向下逐步移出去
关键来了,看alpha 部分
fromAlpha="1.0" android:toAlpha="1.0" //我晕,啥事情都没有干?
android:duration="6000000" //维持这么长时间?没错,这样就将画面永远的卡在可视区域以外喽
3.LayoutAnimation的播放只是在首次载入的时候执行,那岂不是只能播放一次?
答:使用两个完全相同Layout,名字不同(比如:a、b),每次刷新交替使用,那它就永远播放喽
可以得意一下了,但事情还没有完:
利用上面的知识,你可以同设计组合动作来达到动画的目的,当然设计动作还是需要好好动一下脑子的:lol
我前面说过widget还会碰到一个很棘手的事情--内存限制,当你兴奋地设置着n个image,你会发现widget不刷新了...实际上处于崩溃状态...
其实会有几种解决方法,这有待于您的思考,不过为了证明是可行的,我先说一种:
利用setImageViewUri来设置图像,uri可以指向一个文件,当然喽最容易的是放在SD卡上面的文件
转载:http://www.adobex.com/android/source/details/00000425.htm