`
longgangbai
  • 浏览: 7349317 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义视图View的学习和Handler.post更新视图的应用

 
阅读更多
package com.easyway.android.listviews;

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 

/**
 * 自定义视图View的学习和Handler.post更新视图的应用
 * 
 * @author longgangbai
 *
 */
public class TestHandler2 extends Activity { 
		private MyView myView; 
		
		private Handler mHandler; 
		@Override
		public void onCreate(Bundle savedInstanceState) { 
	        super.onCreate(savedInstanceState); 
	        myView = new MyView(this); 
	        //创建处理器
	        mHandler = new Handler(); 
	        //执行更新的线程
	        mHandler.post(update); 
	        //展示视图
	        setContentView(myView); 
	    } 
	    
	    private Runnable update = new Runnable() { 
	        public void run() { 
	        	//刷新视图的
	            myView.update();
	            //
	            mHandler.postDelayed(update, 5); 
	        } 
	    }; 
	    /**
	     * 自定义视图的使用
	     * @author Administrator
	     *
	     */
	    class MyView extends View{ 
	    
		    private float x = 0f; 
			public MyView(Context context) { 
				super(context); 
			} 
			public void update(){ 
				postInvalidate(); 
			} 
			/**
			 * 重写绘制界面的方法
			 */
			@Override
			protected void onDraw(Canvas canvas) { 
				super.onDraw(canvas); 
				x+=1; 
				Paint mPaint = new Paint(); 
				mPaint.setColor(Color.BLUE); 
				canvas.drawRect(x, 40, x+40, 80, mPaint); 
			} 
	    }
} 

 

 

package com.easyway.android.listviews;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
/**
 * Handler更新视图的一种方法
 * @author longgangbai
 *
 */
public class TestHandler extends Activity { 
     protected static final int GUIUPDATEIDENTIFIER = 0x101; 

     Thread myRefreshThread = null; 
     BounceView myBounceView = null; 

     /**
      * 处理器的类
      */
     Handler myHandler = new Handler() { 
          public void handleMessage(Message msg) { 
               switch (msg.what) { 
                    case TestHandler.GUIUPDATEIDENTIFIER: 
                         myBounceView.invalidate(); 
                         break; 
               } 
               super.handleMessage(msg); 
          } 
     }; 
     @Override
     public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

          this.myBounceView = new BounceView(this); 
          this.setContentView(this.myBounceView); 
          //启动线程
          new Thread(new myThread()).start(); 
     } 

     class myThread implements Runnable { 
          public void run() { 
               while (!Thread.currentThread().isInterrupted()) {  
                     
                    Message message = new Message(); 
                    message.what = TestHandler.GUIUPDATEIDENTIFIER; 
                    
                    TestHandler.this.myHandler.sendMessage(message); 
                    try { 
                         Thread.sleep(100);  
                    } catch (InterruptedException e) { 
                         Thread.currentThread().interrupt(); 
                    } 
               } 
          } 
     } 
}

 

分享到:
评论

相关推荐

    android 自定义View 的一个实例

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和视觉效果的组件。本实例将深入探讨如何自定义一个Android View来模拟动态背景,这通常用于增强用户界面的交互性和视觉...

    自定义View实现模拟时钟

    在Android开发中,自定义View是一种常见的需求,用于创建...这个过程涉及到了自定义View的基本原理,包括绘制、动画更新和属性解析等关键知识点。通过这个实例,开发者可以进一步理解和掌握 Android 自定义View的开发。

    安卓自定义View实现图片上传进度

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和交互的视图组件。本教程将深入探讨如何利用Android SDK来实现一个自定义View,用于展示图片上传的进度,类似于QQ聊天应用...

    android自定义View探索4(文字跑马灯)

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面...在压缩包中的`MyView`可能就是这样一个自定义View的实现,包含了完整的代码示例,开发者可以参考学习并在此基础上进行扩展。

    自定义View实现下雪效果

    在Android开发中,自定义View是一种常见的技术,用于创建具有独特视觉效果或特定交互功能的视图组件。本文将深入探讨如何实现一个自定义View,以实现“下雪效果”。这个效果可以为用户界面增添动态的美感,尤其适用...

    viewpager+fragment实现自定义view定时轮转效果

    总结来说,通过结合`ViewPager`、`Fragment`和自定义的`PagerAdapter`,我们可以创建一个包含多个页面的应用界面。同时,通过使用`Handler`和`Runnable`,可以实现定时自动轮转的效果。如果需要自定义每个页面的显示...

    ViewPager实现的轮播图广告自定义视图网络图片

    这可以通过自定义View或者使用现有的库如CirclePageIndicator来实现。 6. **优化性能**: 对于大量图片的轮播图,要关注性能优化。例如,使用ImageView的ScaleType来适应不同尺寸的图片,利用内存缓存和磁盘缓存...

    RecyclerView每个item 实现计时

    在实际应用中,我们可能会遇到这样的需求:为RecyclerView的每个item中的某个控件(如TextView)添加计时功能,比如倒计时、实时更新等。本教程将详细介绍如何在RecyclerView的每个item中实现计时功能。 首先,我们...

    自定义ImageSwitcher实现更新图片切换效果

    本教程将详细介绍如何利用自定义的`ImageSwitcher`来实现更新图片的平滑切换效果。`ImageSwitcher`是Android提供的一个用于在两张图片之间进行切换的视图,它内部集成了`ViewFlipper`,可以实现过渡动画,让图片切换...

    Python库 | django_simple_file_handler-0.1.4.tar.gz

    1. **文件上传**: `django_simple_file_handler`简化了文件上传的流程,允许开发者通过定义简单的模型字段和视图来处理文件上传请求,无需过多关注底层实现细节。 2. **文件存储**: 库内建了多种存储后端,包括本地...

    listview自动滚动

    ListView是Android平台上常见的一种用于展示大量数据的视图组件,它可以高效地管理并显示大量列表项。在Android应用开发中,我们经常需要实现ListView的自动滚动功能,这通常用于模拟滚动效果、展示通知或者实现自动...

    自定义控件

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。自定义控件允许开发者根据需求设计出与系统自带控件不同的交互方式和视觉效果。本篇将深入探讨如何创建一个自定义的时钟控件,并结合`View`类...

    自定义圆弧型进度条

    在Android开发中,自定义视图是提升用户体验和界面独特性的重要手段。本文将深入探讨如何创建一个自定义的圆弧型进度条,包括设置缺口和动态调整进度。这个自定义进度条允许开发者以平滑的方式展示任务的完成进度,...

    自定义控件-仿QQ联系人侧滑条目,右侧滑菜单。

    可以利用`View.post()`或`Handler`来延迟执行非实时任务。 8. **可配置性**:为了让控件具有更好的灵活性,可以添加一些公开的属性,如滑动距离、动画时间等,允许用户在使用时自定义。 9. **复用与扩展**:设计时...

    ViewFlipper通过两个View实现无限播放

    在Android开发中,...在实际应用中,你还可以根据需求扩展这个功能,比如增加更多视图、添加手势切换支持、自定义更复杂的动画效果等。通过熟练掌握ViewFlipper,你可以为用户创造更加生动、有趣的交互体验。

    自定义dialog源码

    在`onStart`方法中,创建一个Handler并post一个Runnable,Runnable中调用`dismiss()`方法来关闭Dialog。记得在`onStop`中移除Runnable,避免内存泄漏。 4. **监听Dialog外部点击事件** 为了让Dialog在用户点击外部...

    安卓Android源码——用ViewPager实现手动切换,用Timer + Handler实现自动切换.zip

    在安卓Android开发中,UI设计和用户体验是至关重要的部分,其中滑动切换页面的效果常常用于展示多页内容,如图片轮播、应用介绍等场景。本教程将详细讲解如何使用ViewPager实现手动切换,并结合Timer与Handler来实现...

    Android 自定义控件 时钟

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本教程将深入探讨如何创建一个自定义的时钟控件。我们将基于Android的基本组件和绘图API来实现这个功能。 首先,理解Android控件的基础至关重要...

    Android 酷炫倒计时 源码

    总之,这个"Android 酷炫倒计时 源码"项目提供了一个使用自定义View、TimerTask和Handler实现的倒计时组件,对于希望提升应用用户体验的开发者来说,这是一个很好的学习和参考案例。通过研究这个项目,你可以深入...

    自定义Android菜单oc

    在Android开发中,自定义菜单背景能够为应用增添独特的风格,提升用户体验。默认情况下,Android系统的菜单背景通常是白色,但通过编程方式,我们可以轻松实现个性化菜单背景。以下是如何自定义Android菜单背景的...

Global site tag (gtag.js) - Google Analytics