-
Android应用之SurfaceView的双缓冲使用
- 时间:2024-03-21 来源:18新利app 人气:
本文摘要:这次讲解SurfaceView的双缓冲器用于。双缓冲器是为了避免动画闪光而构建的一种多线程应用于,基于SurfaceView的双缓冲器构建很非常简单,进一条线程并在其中绘图才可。本文讲解基于SurfaceView的双缓冲器构建,以及讲解类似于的更加高效的构建方法。 本文程序运行图片如下,左边是进单个线程加载并绘图,右边是进两个线程,一个专门加载图片,一个专门绘图:对比一下,右边动画的帧速显著比左边的慢,左右两者都没有用于Thread.sleep()。
这次讲解SurfaceView的双缓冲器用于。双缓冲器是为了避免动画闪光而构建的一种多线程应用于,基于SurfaceView的双缓冲器构建很非常简单,进一条线程并在其中绘图才可。本文讲解基于SurfaceView的双缓冲器构建,以及讲解类似于的更加高效的构建方法。
本文程序运行图片如下,左边是进单个线程加载并绘图,右边是进两个线程,一个专门加载图片,一个专门绘图:对比一下,右边动画的帧速显著比左边的慢,左右两者都没有用于Thread.sleep()。为什么要进两个线程一个读书一个画,而不去进两个线程像左边那样都边读书边画呢?因为SurfaceView每次绘图都会瞄准Canvas,也就是说同一片区域这次没画完了下次就无法画,因此要提升双缓冲器的效率,就得进一条线程专门画图,进另外一条线程做到预处理的工作。main.xml的源码:viewplaincopytoclipboardprint??xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=/apk/res/androidandroid:layout_width=fill_parentandroid:layout_height=fill_parentandroid:orientation=verticalLinearLayoutandroid:id=@+id/LinearLayout01android:layout_width=wrap_contentandroid:layout_height=wrap_contentButtonandroid:id=@+id/Button01android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=单个独立国家线程/ButtonButtonandroid:id=@+id/Button02android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=两个独立国家线程/Button/LinearLayoutSurfaceViewandroid:id=@+id/SurfaceView01android:layout_width=fill_parentandroid:layout_height=fill_parent/SurfaceView/LinearLayout?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=/apk/res/androidandroid:layout_width=fill_parentandroid:layout_height=fill_parentandroid:orientation=verticalLinearLayoutandroid:id=@+id/LinearLayout01android:layout_width=wrap_contentandroid:layout_height=wrap_contentButtonandroid:id=@+id/Button01android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=单个独立国家线程/ButtonButtonandroid:id=@+id/Button02android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=两个独立国家线程/Button/LinearLayoutSurfaceViewandroid:id=@+id/SurfaceView01android:layout_width=fill_parentandroid:layout_height=fill_parent/SurfaceView/LinearLayout本文程序的源码:viewplaincopytoclipboardprint?packagecom.testSurfaceView;importjava.lang.reflect.Field;importjava.util.ArrayList;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.graphics.Rect;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.SurfaceHolder;importandroid.view.SurfaceView;importandroid.view.View;importandroid.widget.Button;publicclasstestSurfaceViewextendsActivity{/**Calledwhentheactivityisfirstcreated.*/ButtonbtnSingleThread,btnDoubleThread;SurfaceViewsfv;SurfaceHoldersfh;ArrayListIntegerimgList=newArrayListInteger();intimgWidth,imgHeight;Bitmapbitmap;//独立国家线程加载,独立国家线程绘图@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);btnSingleThread=(Button)this.findViewById(R.id.Button01);btnDoubleThread=(Button)this.findViewById(R.id.Button02);btnSingleThread.setOnClickListener(newClickEvent());btnDoubleThread.setOnClickListener(newClickEvent());sfv=(SurfaceView)this.findViewById(R.id.SurfaceView01);sfh=sfv.getHolder();sfh.addCallback(newMyCallBack());//自动运营surfaceCreated以及surfaceChanged}classClickEventimplementsView.OnClickListener{@OverridepublicvoidonClick(Viewv){if(v==btnSingleThread){newLoad_DrawImage(0,0).start();//进一条线程加载并绘图}elseif(v==btnDoubleThread){newLoadImage().start();//进一条线程加载newDrawImage(imgWidth+10,0).start();//进一条线程绘图}}}classMyCallBackimplementsSurfaceHolder.Callback{@OverridepublicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,intheight){Log.i(Surface:,Change);}@OverridepublicvoidsurfaceCreated(SurfaceHolderholder){Log.。
本文关键词:18新利app,Android,应,用之,SurfaceView,的,双,缓冲,使用,这次
本文来源:18新利app-www.pietytive.com
相关文章
-
示波器是一种用途十分普遍的电子测量仪器。它能把肉眼看不到的电信号转换成看见的图象,便于人们研究各种电现象的变化过程。 示波器利用狭小的、由...2024-03-21 01.03.02
-
作为汽车媒体同行,常常要参与各路汽车企业的公布或试驾不会,虽然都是久经沙场的“杨家司机”,但是面临“新能源车”这样的新事物不免有些“误区...2024-03-21 01.03.02
-
LONDON — When a SWAT team appeared at Pavel Durov’s door in St. Petersburg, he started thinking about his future in Russia.伦敦——当一支特警队经常出现在帕维尔·杜罗夫(Pavel Du...2024-03-21 01.03.02
-
根据HIS对全球安防市场的统计数据,近几年全球安防市场始终保持将近两位数的增长率,到2017年安防市场规模未来将会超过1700亿美元。并且,预示着物联...2024-03-17 01.03.01
-
21世纪,随着物联网技术的大大发展,各类智能家居产品在生活中更加多,而人们对智能家居嵌入式便捷性、高效性的拒绝也更加低,嵌入式沦为了科学研...2024-03-17 01.03.01