j2me on android,J2ME和Android的几个基本区别
首先从程序上来说的话,基本是没有多少区别的.都是使用JAVA语言开发,使用的框架和类不同而已.
一、平台的区别
J2me: 开发平台
Android: 操作系统
二、工程结构比较
J2me:
Res:资源文件
Src:源代码
Android:
Src:源代码
Res\drawable:图片
Res\raw:声音
Res\values:字符串
Assets:数据文件
三、安装包比较
J2me: Jad,jar
Android: apk
四、代码结构比较
J2me: MIDlet,Canvas
Android: Activity,View
都采用继承的方式,都只有一个MIDlet/Activity,一般都只有一个Canvas/View
五、代码比较
一、程序入口
J2me程序入口类为MIDlet,所有的j2me程序都要继承该类来初始化j2me程序。Android程序入口是Activity类。下面先看看她们的生命周期。
J2me
MIDlet生命周期
1、startApp
(活动状态)程序启动的时候会调用该方法来初始化用户需要的资源。
2、PauseApp
(暂停状态)当手机来电接电话的时候,会调用该接口。用户可以调用该接口停止也写线程的操作。
3、destroyApp
(销毁状态)程序退出的时候调用。用户可以调用该接口处理处于活动状态的线程。
该几个周期状态有AMS调用转换,也可以程序代码调用转换。resumeRequest调用会的结果是AMS会调用startApp方法,notifyPaused调用的结果是可能AMS调用PsuseApp,notifyDestroyed调用会使AMS销毁该midlet。
Android
Activity生命周期
1、onCreate
程序开始初始化的时候调用该接口,用户导航返回到Activity的时候也会调用该接口。类似于J2me里面多个Canvase(Displayable)切换。所以Activity也类似于Displayable。
2、onStart onCreate调用完后,程序调用该接口。
3、onResume
onStart调用后调用该接口。此时Activity进入运行状态。
4、onPause
新的Activity启动的时候调用该接口。
5、onStop
该Activity 不可见的时候调用。
6、onDestroy
程序销毁的时候调用。
二、显示组件
J2me中所有可显示的组件都是直接或间接的继承了Displayable,直接的是Canvas和Screen。不同的继承导致了低级UI和高级UI的区别。J2me中现成的UI组件都是直接或者间接继承了Screen。只要调用Display.getDisplay(MIDLet
instan).setCurrrent(Displayable
disp),就可以把组件显示到手机界面上。切换界面的时候也可以使用该接口。
Android可见的组件直接或者间接继承了android.view.View。通过Activity.setContentView(View
view)就可以显示在android手机界面上,切换界面的时候也可以使用该接口。如果是直接继承了View而不是Android自带的UI组件,那么还要自己去实现它的刷新,类似J2me的低级UI组件。
三、刷新处理
J2me刷新:
J2me高级UI组件由组件内部刷新实现,低级UI可以通过Canvas的repain()来刷新。低级UI架构可以用MVC方式来实现,建议使用二级缓存。
Android刷新:
Android提供接口onLayout来提供该View调整其里面组件元素的位置布局,用户只需要重写该接口就ok。刷新接口onDraw,该接口用来刷新界面里面的绘制元素。该接口类似j2me
Canvas的paint接口。不过两个平台传得参数有些意思。J2me传的时Graphics,而android传得是Canvas。Android绘制的时候会传入一个参数Paint。该对象表示绘制的风格,比如颜色,字体大小,字体格式等。如果是移植的话,建议android也使用二级缓存,这样也容易管理。
四、用户事件处理
J2me的键盘、触笔事件都是通过Canvas定义接口分发。用户只需要从写这些接口就ok。它们分别是。键盘接口为:keyPressed(),keyRepeated(),keyReleased()。触笔接口为:pointerPressed(),pointerReleased(),pointerDragged()。
Android的键盘,触笔通过View中定义,只要override其接口就ok了。触笔处理接口onTouchEvent。软键盘onKeyDown()、onKeyUp()、onTracKballEvent()。
j2me on android,J2ME和Android的几个基本区别相关推荐
- android毕业设计——基于Android+Java+Python的手机端办公自动化OA系统设计与实现(毕业论文+程序源码)——办公自动化OA系统
基于Android+Java+Python的手机端办公自动化OA系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Android+Java+Python的手机端办公自动化OA系统设计与实 ...
- android layout组件,Android UI学习 - Linear Layout, RelativeLayout
1.一些常用的公共属性介绍 1) layout_width -宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px值来设置宽 2) lay ...
- android:layout_gravity 和 android:gravity 的区别
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...
- Android横向伸缩,Android 实现伸缩布局效果示例代码
最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...
- android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...
本文将带你了解Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...
- android window 大小,android popupWindow 中宽度莫名很大,求帮助?
这个是popupwindow的内容xml(就是放了个ListView): android:layout_width="wrap_content" android:layout_he ...
- android radiobutton 分组,Android 第十课——UI RadioButton
常用基础空组件 5 RadioGroup RadioButton 单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时 ...
- android单线字体,Android自定义字体
在main文件夹下,新建assets/fonts文件,添加.otf文件 image.png 字体工具类 import android.app.Application; import android.g ...
- mp4 android自动播放,Android 使用VideoView播放MP4的简单实现
使用VideoView播放MP4 播放示例 实现简单的播放功能,播放手机本地的MP4文件.不依赖任何第三方框架,不添加任何防腐剂. 添加一个系统自带的控制条. 申请权限 读取存储中的MP4文件 准备布 ...
- android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...
我收到这个错误, "Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' ...
最新文章
- 静态网页与动态的区别
- YOLO-Fastest:目前最快的YOLO网络!移动端上可达148 FPS
- python学了有什么用处-python用处广吗
- Cisco easy *** basic ASA
- @所有人,20 万大奖待领取!【全民找“BUG”】活动,等你!
- Python中的支持向量机SVM的使用(有实例有源码)
- 手把手教你用Python搭建一个AI智能问答系统
- SPSS数据分析之列联分析与卡方检验、方差分析与LSD方法【操作详解】
- DI使用value属性与value标签的区别以及xml预定义实体引用
- 【机器人】项目疑难杂症
- python 图形库介绍_python 图形数据库
- CentOS 5.2 LVM 新增加一块硬盘的方法
- spring-第十八篇之spring AOP基于XML配置文件的管理方式
- __index元方法
- 记录一次keil调试过程:自动识别GPS厂家芯片
- Android系统10 RK3399 init进程启动(十七) Verbose日志级别打开方式
- 马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)
- Procreate绘画教程
- 计算机专业网名英语翻译,英文网名_好听的英文网名带翻译
- FP16\FP32\INT8\混合精度的含义
热门文章
- Ubuntu配置机顶盒踩坑记录(Airplay/DLNA/UPuP/Miracast)
- 下载百度地图瓦片和获取瓦片经纬度
- 微星的测试软件显示教程,msi afterburner怎么使用显示游戏即时帧率教程
- 数据结构题集第一章(严蔚敏)
- 反编译获取任何微信小程序源码(完)
- PMP题库重要吗?什么样的题库才是好的题库?
- pch文件找不到的解决办法
- dev的pdf Viewer打印如何从横向打印修改为竖向靠上打印?
- 深度干货!一文读懂人脸识别技术(建议收藏)
- python 通信_深入浅出通信原理(Python代码版)