`

安卓开发之自定义控件(三)

阅读更多

1.自定义EditText


 例如上面这个有下划线的EditText,就是自定义的

 

/**
 * 自定义EditText
 * @author tanlvxu
 *
 */
public class MyEditText extends EditText {

	private static final int SEG_CNT = 9;//总的下划线,上图所示9个
	private static final int SEG_GAP_WIDTH = 2;//每个下划线的间距2
   /**
    *必须重写两个构造方法
    */
	public MyEditText(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public MyEditText(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

//	public MyEditText(Context context) {
//		super(context);
//	}
	/**
	 * 要改变其外形,重写其onDraw()方法,改变其点击事件,重写其onClick等方法
	 */
	@Override
	public void onDraw(Canvas canvas) {
		
		Paint paint = new Paint();
		paint.setColor(Color.WHITE);
		paint.setStyle(Style.FILL);
		int height = getHeight();//获取父件高度
		int width = getWidth();//获取父件宽度
		int segLength = (width + SEG_GAP_WIDTH)/SEG_CNT - SEG_GAP_WIDTH;//求得每一根下滑线的长度		
		for(int i = 0; i < SEG_CNT; i++)
		{
			canvas.drawRect(i * (segLength + SEG_GAP_WIDTH), height -1 , i * (segLength + SEG_GAP_WIDTH) + segLength, height, paint);
		}
	}
}

 在xml对应的布局中

 

 

  <com.example.guseewho.MyEditText
      android:background="#00000000"
      android:ems="10"
      android:textColor="#FFFFFFFF"
      >
  </com.example.guseewho.MyEditText>

   要把它的背景设置成透明,#00000000

 

   前两个0是透明度00到ff,从透明到不透明

   后面6个0对应的是RGB值.具体可以参照比色表.

      http://www.wahart.com.hk/rgb.htm

 

2.自定义SurfaceView

 

 做这个游戏的时候,查了很多资料,把surfaceView放在xml上比直接显示要好些.

并且能够加任意控件.

 

/**
 * 自定义SurfaceView
 * @author tanlvxu
 *
 */
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback,
Runnable {
	private SurfaceHolder surfaceHolder ;//控制器
    /**
     * 要放入布局中,必须实现其两个参数的构造方法
     * @param context
     * @param attrs
     */
	public MySurfaceView(Context context, AttributeSet attrs) {
		super(context, attrs);
		surfaceHolder = getHolder();
		surfaceHolder.addCallback(this);
		/**
		 *  Canvas canvas	= surfaceHolder.lockCanvas() ; //锁定屏幕,获取画布
		 *  surfaceHolder.unlockCanvasAndPost(canvas) ;//传递画布,开始绘画
		 */
	}
    
	@Override
	public void run() {
		/**
		 * 刷新画布
		 */
	}

	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {
		// TODO Auto-generated method stub
		
	}
   /**
    * 创建时调用该方法
    */
	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		/**
		 * 线程在这启动
		 * 通过getHeight() ; getWidth();获取其控件的大小
		 */
		
	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		/**
		 * 可以在这里关闭线程
		 */
	}

}

  再Activity中的setContentView();方法之后再取得该组件,不然会报空指针异常

 

 

在xml中:

 

<com.example.view.GameView 
        android:id="@+id/MySurfaceView"
        android:layout_width="自己定义"
        android:layout_height="自己定义"
>
</com.example.view.GameView>

 

 

要更好的控制游戏的存储与读取,可以加个Dialog



 

要在上面加广告,可以在暂停游戏的时候做点功夫



 

  • 大小: 44.6 KB
  • 大小: 373.6 KB
  • 大小: 45.5 KB
  • 大小: 370.7 KB
2
2
分享到:
评论
1 楼 什么世道 2014-01-28  
狂拽霸炫叼炸天.

相关推荐

    Android自定义控件开发入门与实战.zip

    在Android应用开发中,自定义控件是提升用户体验和实现独特设计的重要手段。《Android自定义控件开发入门与实战》这本书深入浅出地讲解了如何在Android平台上创建和使用自定义控件,旨在帮助开发者从基础知识到实战...

    android 开发进阶 自定义控件 类似 TextView

    在Android开发中,自定义控件是提升应用独特性和功能扩展性的重要手段。"android 开发进阶 自定义控件 类似 TextView" 这个主题,意味着我们将探讨如何基于TextView创建一个具有特定功能或视觉效果的新控件。...

    安卓自定义控件相关-Android自定义控件源码.rar

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。这个压缩包"Android自定义控件源码.rar"包含了一些自定义控件的源代码,虽然不能保证每个都可直接运行,但它们提供了丰富的学习资源,帮助开发者...

    Android开发之自定义控件用法详解

    在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。通过自定义控件,开发者可以创建符合特定需求的功能组件,而不仅仅是局限于Android SDK提供的标准控件。本文将深入探讨如何在Android中...

    《Android自定义控件开发入门与实战》_启舰.rar

    Android自定义控件开发入门与实战从自定义基础到实战的讲解。一步步深入。适合有一定Android基础的读者。本压缩包中自带了推荐的pdf阅读器。大家要是喜欢这本文档,推荐去京东,天猫,当当买支持一下默默付出的作者...

    自定义控件Demo

    在Android开发中,自定义控件是提升应用界面独特性和用户体验的重要手段。通过自定义控件,开发者可以创建出符合自身需求的UI组件,从而更好地实现应用的功能和设计。本Demo着重介绍了如何在Android中创建自定义控件...

    【Android进阶】(1)用继承和组合方式自定义控件

    在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。本教程主要探讨如何通过继承和组合的方式来自定义控件,适用于已经有一定Android基础的开发者进行进阶学习。 首先,我们来理解自定义...

    Android简单实现自定义控件

    在Android开发中,自定义控件是提升应用独特性和用户体验的有效方式。本教程将引导初学者如何简单地创建一个自定义控件,该控件基于`LinearLayout`进行扩展。通过这个过程,我们可以深入理解Android UI组件的工作...

    Android-该自定义控件是一个可以滑动改变温度值的表盘控件

    在Android开发中,自定义控件是提升用户体验和界面独特性的重要手段。本文将深入探讨一个特定的自定义控件——“滑动温度表盘控件”,它允许用户通过滑动来调整显示的温度值。这个控件适用于各种需要显示和调节温度...

    Android 编写自定义控件实例

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本教程将通过一个具体的实例——saRoundProgressBarDemo,来教你如何编写一个自定义的圆形进度条控件。这个自定义控件不仅提供了基本的进度显示...

    mono for android 之 自定义控件

    对于初学者来说,理解并实践这些知识点是提升Android开发技能的关键一步。在实际开发中,你可能需要根据具体需求进行更复杂的定制,例如添加动画效果、绘制自定义图形等。不断探索和实践,你将能够熟练掌握自定义...

    android之自定义开关控件

    在Android开发中,自定义控件是提升应用用户体验和界面美观度的重要手段。"android之自定义开关控件"这个主题旨在教你如何在Android平台上创建一个类似苹果iOS Toggle的自定义开关组件。以下是对这个主题的详细讲解...

    Android 自定义控件 组合控件

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。组合控件,顾名思义,是指将多个基本控件通过特定的方式组合在一起,形成一个具有新功能或新外观的复合控件。本篇文章将深入探讨如何在Android中...

    android自定义控件介绍,重写控件

    在Android开发中,自定义控件是提升应用用户体验和实现独特设计的重要手段。本文将深入探讨Android自定义控件的概念、重要性以及如何通过重写已有控件来扩展其功能,帮助开发者从初阶迈进高阶。 首先,我们了解什么...

    安卓自定义控件相关-自定义控件入门级demo.zip

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。这个“安卓自定义控件相关-自定义控件入门级demo.zip”压缩包包含的两个子文件,"zdyview2"和"zdyview",很可能是两个示例项目,用于帮助开发者...

    Android 之 自定义控件用法介绍

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。自定义控件允许开发者根据需求扩展标准Android组件,实现独特的界面效果和交互逻辑。这篇博客将深入探讨如何在Android中创建自定义控件,并提供...

    Android自定义控件示例

    在Android开发中,自定义控件是提升应用独特性和功能扩展性的重要手段。这个压缩包“CustomViews”很可能是包含了一系列Android自定义控件的示例项目,旨在帮助开发者理解和学习如何在Android Studio 1.0.2环境下...

    Android 自定义控件简单Demo

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例"Android 自定义控件简单Demo"将向我们展示如何创建一个结合图片和文字的自定义控件,这通常用于构建定制化的按钮、标签或其他UI元素。...

    安卓开发-自定义控件入门级demo.zip.zip

    在Android开发中,自定义控件是提升应用界面独特性和用户体验的重要手段。通过自定义控件,开发者可以创建出独具特色的界面元素,满足特定的设计需求。这个“安卓开发-自定义控件入门级demo.zip”文件很显然是一个...

    android自定义控件源码

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本资源"android自定义控件源码"提供了一套详细的自定义控件实现案例,帮助开发者深入理解自定义控件的工作原理和实现方法。配合文章《Android...

Global site tag (gtag.js) - Google Analytics