- 浏览: 12349 次
最新评论
-
javafound:
昨开始写这东东?
Android简单画板的实现 -
jiranjiran:
...
多线程小结 -
convolute:
...
基本图形工具和颜色设置 -
javafound:
...
基本图形工具和颜色设置
文章列表
Android简单画板的实现
- 博客分类:
- android初学
与我们学java基础时接触到的画板相比,我觉得Android画板相对来说是要更复杂些的。创建一个Android画板,我们需要的基本接口有:
Bitmap (位图):相当于存储空间,承载了所有实际的像素。
Canvas (画布):在位图上画图
Paint (画笔):可用于设置颜色、粗细、透明度等。
Drawable :代表某种可绘制的资源
由于界面是以Activity显示的,那么如果我们要看到Bitmap中的图片,就要用到组件ImageView,把Activity和Bitmap联系起来,由此我们就建立了一个画板,具体代码如下:
Canvas canvas;//画布
Bitmap bitm ...
我们都知道,主函数的格式为public static void main(String[] args){},那么为什么要用static呢?
既然这个问题和static有关,我想先了解一下static还是比较必要的。通过查阅一些资料,我对static的用法进行了如下总结:
一、静态变量
用static修饰的变量属于静态变量,静态变量是一个公有资源,只要这个类中任意一个对象改变了这个变量,那么该类的所有对象都会改变,也即一个类的对象不管有多少,其静态变量始终只有一个值。
二、静态方法
静态方法可以在不实例化对象的前提下,用类直接调用,这样就不难理解静态方法内只能调用静态方法和变量,而不能调用非静 ...
bitmap,即是用bit和存储数据组成map,这里以一个bit对应一个数据,也就是bit作为key,对应的数据则是value.这样一个很大的数据,我们用一个bit来存储,就节省了很大的存储空间。我们可以用一个例子来说明:
对5亿个int型数据进行排 ...
最近接触了Android后,发现它似曾相识,但又有一些新鲜和神奇,今天我把初识Android后通过简单界面开发对它的了解进行了如下总结:
一、项目的创建
一切从头开始,第一步必然是新建了。基本步骤:File-New-(project...)-Android ...
一、程序、进程、线程
程序:静态的代码
进程:程序运行的过程
线程:比进程更小的执行单位,多线程给人一种多个事件同时发生的感觉(其实这是错觉)。
二、实现多线程常用的方法
1、继承Thread 2、实现Runnable接口
无论使用这两种方法中的哪个,都要重写(或实现)run()方法,目的是规定线程的具体操作。
而调用线程具体操作时是要调用start()方法,并不是run()方法。
通过继承Thread实现多线程时,可以直接用Thread对象调用start()方法;
通过实现Runnable接口实现多线程时,仍然要用到Thread类
如下,ThreadTest和RunnableTest两个 ...
这个五子棋游戏目前实现了人人对战,其中包含的功能有开始、悔棋、和棋,以及提示当前参与者应该下棋的颜色、判断输赢。(附件中附有jar包)下面我按照实现过程中遇到的问题来介绍实现的方法。
我觉得人人对战实现的关 ...
一、基本概念
1. 哈夫曼树即最优二叉树,是只有叶节点才能存放数据,且使所有数据到根节点的距离与
其权值乘积和最小的二叉树。
2.建立哈夫曼树的步骤:
step1.从所有数据中找到权值最小的两个数据A和B,把A和B作为两个子节点,建立
一个二叉树,设它们的父节点为C,C的权值是A和B权值的和。
step2.在原来的所有数据中用C替换A和B,重复step1。
step3.直到只剩下一个数据时哈夫曼树完成。
二、用程序获得哈夫曼树
1.建立结点类
哈夫曼树中的结点包括数据权值(int型)、左侧子结点(结点型) ...
一、什么是泛型
我们写程序是为了让别人使用的,为了提高代码的价值,就需要增加其重复可用性。比如一个点的坐标可以有多种数据类型的表示方法:
整型 x=3,y=4;
浮点型 x=3.2,y=5.4;
字符串型 x=东经50度,y=北纬32度
如果我们在写代码时直接确定了x,y的数据类型,那么每需改变它们的数据类型,都要重新添加新的代码。
而泛型是在定义类时没有给属性设置具体的数据类型,在外部声明及实例化对象的时候才具体说明数据类型。
二、泛型类型标识
泛型类型标识是为了在数据类型还不确定时用以代替数据类型的符号。
三、基本格式
泛型类定义
访问权限 class ...
在以前制作的简单画板中,每当变动窗体时画出的图形都会消失,这个问题就需要通过重绘来实现。
重绘的原理:屏幕上的所有东西事实上都是由一个个的点绘制而成,包括窗体本身。JFrame类中有一个方法paint(),每当打开窗体时系统都会自动调用这个方法,把窗体画出来。
那么要想在窗体变动时窗体上画出的图案和窗体一样仍然存在,可以在定义时重写paint()的方法,在其中写上画这些图形的方法。这样,就需要从事件处理类中获得一些坐标,由于坐标的数量不定,而且画的基本图形不定,可以用队列存储这些信息。队列中的每个元素是一个数组,用数组中的第一个元素存储画的基本图形。
1、在事件处理类中,定义一个队列作为 ...
1、 计算机中的存储方式可以大致分为两类:离散存储、有序存储。
其中的典型代表为链表和数组。
2、 数组的定义格式: 数据类型【】 数组名=new 数据类型【数组长度】;
数据类型【】 数组名={元素表};
数据类型 数组名【】={元素表};
java中的数组为定长,即在定义时必须给定数组的长度。
由于数组是按顺序存储,所以查找时可以直接根据数组中元素的下标获得所需数据。
3、 链表就像一条隐形的链子,一环扣一环。链表的基本单位是结点,每个结点包括两个部分:该结点中的存储的数据,以及所连接的下个结点 ...
递归即方法调用自己本身的过程。在这个过程中,只是每次调用方法时参数有所改变,对变量的操作是一样的,递归调用时必须有一个明确的结束条件,然后不断改变传入的数据。方法的递归调用可以用下图表示:
使用递归方法可以绘制出许多有规律且漂亮的图形,如下
在用递归方法绘制图形时,我总结出以下几点:
1、用递归方法画图形时,首先要找出其中的基本单位;
2、对于按下鼠标键后,依次出现图形单元的图,可以设置一个全局变量记录点击鼠标的次数,在每次使用递归函数时,用这个全局变量限制递归的次数;
3、对于基本单位是依次旋转的图形,从角度的变化着手可以使程序的实现更加简洁。
以下是绘制 ...
应用小结
设置线条粗细时,可以通过较多的线条的累积实现;
通过对颜色的设置,尤其是颜色过渡,可以使图形出现立体的效果;
对于陌生的类或方法,可通过查看源代码学习;
使每次画图时画布清空,可用clearRect()方法;
设 ...
1.抽象类的格式
public abstract class 抽象类名(){
public 返回值类型 属性名;
//普通方法
public 返回值类型 方法名(参数值类型 参数名,...){
}
//抽象方法
public abstract 返回值类型 方法名(参数值类 ...
1.继承的作用
提高代码的重用性;增强程序的扩展性
(子类中可以有比父类更多的方法和属性(子类可以有自己的属性和方法),而父类中不能有这些方法和属性)
2.继承的格式
public class 子类名 extends 父类名(){
}
...