昨天在做一个界面时,想在用户touch屏幕之后先绘图一下,待逻辑处理完毕,再绘制最后的图,查看View的重绘方法,得知是invalidate()函数,于是在代码中这么写道:
- publicclassPuzzleViewextendsView{
- @Override
- protectedvoidonDraw(Canvascanvas){
- ...
- }
- @Override
- publicbooleanonTouchEvent(MotionEventevent){
- invalidate();
- invalidate();
- }
- }
写完,运行,oh,my god,只有第二次invalidate做了,第一次打酱油去了,翻资料,翻啊翻,看到Invalidate()的描述是这样的:当调用线程处于空闲状态时,会调用onDraw,刷新界面,也就是说,该函数仅是标记当前界面过期,并不直接负责刷新界面,奶奶的,不刷。。。继续翻啊翻,看到SurfaceView 能实现实时刷新,代码结构如下:
- publicclassPuzzleViewextendsSurfaceViewimplementsSurfaceHolder.Callback{
- privateSurfaceHoldersurfaceHolder;
- publicPuzzleView(Contextcontext){
- surfaceHolder=this.getHolder();
- surfaceHolder.addCallback(this);
- }
- protectedvoidpaint(Canvascanvas){
- }
- publicvoidrepaint(){
- Canvasc=null;
- try{
- c=surfaceHolder.lockCanvas();
- paint(c);
- }finally{
- if(c!=null){
- surfaceHolder.unlockCanvasAndPost(c);
- }
- }
- }
- }
好了,这样写好后,只要在以前调用invalidate()的地方调用repaint()就OK了~
分享到:
相关推荐
在“android自定义view之刷新验证码”这个主题中,我们将深入探讨如何利用自定义View来实现一个可刷新的验证码显示组件。验证码通常用于验证用户身份,防止机器人或者恶意软件的自动操作,确保数据安全。 首先,...
在Android开发中,自定义View是一项重要的技能,它允许开发者扩展Android系统提供的基本视图组件,以满足项目中独特的需求。本篇文章将深入探讨如何基于鸿洋大神的博客内容,创建一个自定义的验证码View。 验证码的...
在Android中,自定义 View 是一种非常重要的技术,可以满足开发者的个性化需求。通过继承 View 类,并重写构造函数和 onDraw() 函数,可以实现自定义的 View。onDraw 函数是 View 的一个关键函数,在界面刷新时会被...
在Android应用开发中,RecyclerView是一个强大的视图组件,它用于展示可滚动的列表或网格数据。本教程将探讨如何在RecyclerView中实现自定义的下拉刷新功能,这在许多应用程序中都是一个常见的需求,比如社交媒体...
这可以通过设置一个自定义的View来实现,然后在` SwipeRefreshLayout `中设置这个View作为刷新头部。 4. **ListView与Adapter**:在实现下拉刷新功能的同时,别忘了ListView的核心是Adapter。Adapter负责将数据转化...
1. **状态管理**:下拉刷新有多个状态,包括Reset(初始状态)、Pull(下拉中)、Refreshing(刷新中)、Completed(刷新完成)和Reset(再次回到初始状态)。我们需要管理这些状态,确保在不同状态下正确地更新UI和...
总结,下拉刷新和上拉加载是Android应用中常见的功能,通过SwipeRefreshLayout和OnScrollListener可以方便地实现。自定义ListView则允许开发者更深入地控制列表的行为和视觉效果,以提供更加个性化的用户体验。在...
在Android应用开发中,"通用下拉刷新"是一种常见的组件功能,它允许用户通过下拉列表来刷新数据。这个功能通常被用在ListView、RecyclerView等滚动视图中,以实现数据实时更新。XRefreshView是可能的一个开源库,...
在Android开发中,View是构建用户界面的基本元素,它负责将数据可视化并处理用户的交互事件。`invalidate()`方法是View类中的一个重要成员,用于触发View的重绘操作。本篇文章将深入探讨Android中View的绘制流程以及...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有创意的用户界面。本篇文章将探讨如何创建一个模仿腾讯TIM应用下拉刷新效果的自定义View。这个效果的特点是,当用户下拉时,界面上的小球...
这个"Android listView下拉刷新上拉刷新带阻尼效果"的源码Demo是几年前的一个示例,旨在帮助学生理解和实现Android应用中的下拉刷新和上拉加载更多功能,同时加入了阻尼效果,提升用户体验。阻尼效果是指在用户滑动...
总结,`notifyDataSetChanged()`是Android中更新ListView数据的关键方法,它使得开发者能够在程序运行时轻松地实现列表数据的动态刷新,提供了丰富的用户体验。但同时也需要注意性能优化,合理使用,以避免对应用...
在Android开发中,下拉刷新是一项常见的功能,它允许用户通过在列表顶部向下拉动来刷新内容。Android系统自API 19(KitKat)开始引入了一个名为`SwipeRefreshLayout`的原生控件,用于实现这一交互。这个控件通常与`...
Android自定义控件下拉刷新上拉加载,所有View通用.(直接拿来用).实现了ListView、GridView、ExpandableListView、ScrollView、WebView、ImageView、TextView的下拉刷新和上拉加载
在安卓(Android)应用开发中,用户界面的交互体验至关重要,而刷新按钮的动画效果是提升用户体验的一个关键因素。在本教程中,我们将探讨如何在Android工具栏中实现一个点击后由单箭头变为旋转圆圈的刷新按钮动画...
`ImageView`通常用于显示一个箭头图标,表示当前状态是待刷新(如上拉)或刷新中(如旋转)。`ProgressBar`则在刷新过程中显示,提示用户数据正在加载。 ```xml android:id="@+id/arrow" android:layout_width=...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。有时候,为了提升用户体验,我们希望在WebView中实现下拉刷新的功能,就像原生的ListView或RecyclerView那样。本篇文章...
SwipeRefreshLayout是Android SDK中的一个布局容器,设计用于包裹一个可以刷新的View,如ListView、RecyclerView等。当用户从顶部向下滑动时,SwipeRefreshLayout会显示一个刷新指示器,表示正在加载新数据。一旦...
这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解如何在ListView中实现这一功能。 1. **SwipeRefreshLayout**:Android SDK 提供了一个名为SwipeRefreshLayout的布局容器,它是...
在Android开发中,"下拉刷新"是一种常见的用户交互功能,允许用户通过在列表顶部向下拉动来获取最新的数据。这个功能极大地提升了应用的用户体验,让用户能够实时获取到更新的信息。在本项目中,你将找到一个可以...