1:经查资料,Android中gif动画加载共有两种

1)利用WebView,WebView 主要调用三个方法:LoadUrl、LoadData、LoadDataWithBaseURL

2)主要用的是:android中的android.graphics.Movie 这个类,这是android提供给我们的一个非常方便的工具。有些注意点 比如API 11 Android 3.0 Honeycomb (APIlevel 11) 之后不能使用硬件渲染。

/**
* Starting from HONEYCOMB have to turn off HW acceleration to draw
* Movie on Canvas.
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

需要关闭View组件的硬件渲染。参考如下:

public class FragmentComment extends Fragment {

	private View rootView;

	@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
rootView = inflater.inflate(R.layout.case_history_comment, null);
rootView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
return rootView;
}
}

  

  

参考:http://my.oschina.net/u/143926/blog/173011?fromerr=4flma5q5

最终看到了http://weavora.com/blog/2012/02/07/android-and-how-to-use-animated-gifs/这篇文章中的总结。

第一种    gone         表示不可见并且不占用空间

第二种    visible       表示可见

第三种    invisible    表示不可见但是占用空间

android view setVisibility():
有三个参数:Parameters:visibility One of VISIBLE, INVISIBLE, or GONE,想对应的三个常量值:0、4、8
VISIBLE:0  意思是可见的
INVISIBILITY:4 意思是不可见的,但还占着原来的空间
GONE:8  意思是不可见的,不占用原来的布局空间

这三种情况元素都没有销毁。

1.当动画界面不可见时移除动画
2.测试fragment不可见时是否销毁了所在View
3.代码点击了“病例”按钮进入学习考试栏

CaseHistory.java//滑动切换的时候销毁当前的组件
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
((ViewPager) container).removeView(viewContainter.get(position));
}
4.修改了Orthodontics类名。
5.解决了Orthodontics类中方案动画点击事件bug。
6.重新写了方案动画的xml文件
7.别忘了禁用View的硬件加速功能 myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

8. 只能先设置setContentView(R.layout.activity_orthodontics_case);才能用findViewById去获取其中的组件。

05-08 15:35