第一篇:Android手机刷机知识的总结
本教程只是对Android手机刷机知识的普遍总结,所有的Android手机都可以参考。现在的刷机方法很多,而且不一样的手机刷机方法不一样。本教程只做参考。
1、什么是root?
root相当于Windows中的管理员权限,root权限默认是不允许用户使用的,因为用户可能会误操作或者运行到恶意软件而通过root权限破坏手机文件系统。
2、那么为什么要root呢?
root过的Nexus One可以做更多的事情,翻wall更方便,运行Ubuntu,刷机等等。
3、如何看是否成功root了?
去Android Market找一个Terminal Emulator下载下来,进入Terminal Emulator以后键入su回车,如果命令提示开头从$变成了#则代表root成功
备用方法:键入su后回车,接着键入whoami回车,如果显示uid 0则代表root成功
4、什么是“解锁bootloader”?
bootloader一旦解锁将不再被保修,但是可以允许你更方便的安装第三方系统
5、解锁bootloader后的现象是什么?
开机后屏幕下方会有一个开锁的标志
6、什么是Recovery?
直译过来“恢复”,就是一个仅有刷机(和其他辅助刷机的功能)的一个程序,一般情况下刷机都是通过 Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我个人建议使用Amon RA1.8.0.1或以上的版本,操作简单。
7、什么是Radio?
负责处理通讯信号的一系列软件,新版的Radio一般能带来更少的电池消耗、更强的信号、更好的通话质量和网络速度。Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8虽然不是Android2.2但是也需要4.0.6的Radio才能工作.8、什么是Kernel?
内核,Android系统基于Linux,Linux的运行就要靠内核来做所有底层的数据交换和调度。新版的Kernel一般能带来系统速度的提升和新功能,还有就是不同的电源管理方案可能节省电池。不是所有的Kernel都能用在所有的系统上,比如 Pershot做的Kernel就只能适用于CM和Enomther的系统。
9、内核电源管理AVS和SVS的区别?
Nexus One的CPU自身支持一种调整电压的方式,就是根据CPU的运行情况动态调整所需的电压,这种模式就是AVS。但是Nexus One原版的系统并不支持这个功能,因为这个功能并不是经过严格测试的。目前最常见的AVS内核就是IntersectRaven制作的了,现在AVS内核在大多数Nexus One上是比较稳定的。
默认的电源管理是SVS,也就是静态电压设置,根据CPU的工作频率跟负载来静态的调节电压。
一般来讲AVS比SVS更节省电池
一般刷机的步骤顺序:
1、解锁Bootloader
2、刷第三方Recovery
3、通过Recovery,先刷 Radio(注意版本,Android2.2系统必须用4.06或以上的Radio,最新版是5.12)
4、通过Recovery,刷系统
5、(如果系统并不自带Google的软件)刷Google Apps Addon(主要适用于Cyanogen Mod)
6、(可选)通过 Recovery,刷内核
radio、系统、google apps跟内核的顺序一定不要随意调整,否则容易造成系统无法启动的情况
第二篇:Android手机刷机知识小总结
Android手机刷机知识小总结
本教程只是对Android手机刷机知识的普遍总结,所有的Android手机都可以参考。现在的刷机方法很多,而且不一样的手机刷机方法不一样。本教程只做参考。
1、什么是root?
root相当于Windows中的管理员权限,root权限默认是不允许用户使用的,因为用户可能会误操作或者运行到恶意软件而通过root权限破坏手机文件系统。
2、那么为什么要root呢?
root过的Nexus One可以做更多的事情,翻wall更方便,运行Ubuntu,刷机等等。
3、如何看是否成功root了?
去Android Market找一个Terminal Emulator下载下来,进入Terminal Emulator以后键入su回车,如果命令提示开头从$变成了#则代表root成功
备用方法:键入su后回车,接着键入whoami回车,如果显示uid 0则代表root成功
4、什么是“解锁bootloader”?
bootloader一旦解锁将不再被保修,但是可以允许你更方便的安装第三方系统
5、解锁bootloader后的现象是什么?
开机后屏幕下方会有一个开锁的标志
6、什么是Recovery?
直译过来“恢复”,就是一个仅有刷机(和其他辅助刷机的功能)的一个程序,一般情况下刷机都是通过 Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我个人建议使用Amon RA1.8.0.1或以上的版本,操作简单。
7、什么是Radio?
负责处理通讯信号的一系列软件,新版的Radio一般能带来更少的电池消耗、更强的信号、更好的通话质量和网络速度。Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8虽然不是Android2.2但是也需要4.0.6的Radio才能工作.8、什么是Kernel?
内核,Android系统基于Linux,Linux的运行就要靠内核来做所有底层的数据交换和调度。新版的Kernel一般能带来系统速度的提升和新功能,还有就是不同的电源管理方案可能节省电池。不是所有的Kernel都能用在所有的系统上,比如 Pershot做的Kernel就只能适用于CM和Enomther的系统。
9、内核电源管理AVS和SVS的区别?
Nexus One的CPU自身支持一种调整电压的方式,就是根据CPU的运行情况动态调整所需的电压,这种模式就是AVS。但是Nexus One原版的系统并不支持这个功能,因为这个功能并不是经过严格测试的。目前最常见的AVS内核就是IntersectRaven制作的了,现在AVS内核在大多数Nexus One上是比较稳定的。
默认的电源管理是SVS,也就是静态电压设置,根据CPU的工作频率跟负载来静态的调节电压。
一般来讲AVS比SVS更节省电池 一般刷机的步骤顺序:
1、解锁Bootloader
2、刷第三方Recovery
3、通过Recovery,先刷 Radio(注意版本,Android2.2系统必须用4.06或以上的Radio,最新版是5.12)
4、通过Recovery,刷系统
5、(如果系统并不自带Google的软件)刷Google Apps Addon(主要适用于Cyanogen Mod)
6、(可选)通过 Recovery,刷内核
radio、系统、google apps跟内核的顺序一定不要随意调整,否则容易造成系统无法启动的情况
第三篇:优刷手机pos机是什么
优刷(yopay)手机移动pos机是什么:
随着移动互联网时代的来临,手机正在逐步取代电脑成为媒体终端、娱乐终端、交易终端,而便捷高效的手机移动支付工具更呼之欲出,优刷刷卡器就在此时应运而生。
优刷手机移动pos机是一款手机移动pos机,其实就是一个手机刷卡器又叫刷卡头,可以通过这个简单的手机pos机来实现你的金融服务,比如说:可以刷信用卡、可以转账汇款、信用卡还款、话费充值、支付宝充值、订火车票、订飞机票、还可以支付订单、像水电煤缴费呀,本市优惠之类的都有。你说选择手机pos机你选对了么?
优刷(yopay)产品核心特征:
1)、硬件加密机制
刷卡器内部有专用安全芯片,用于存储密钥及加密敏感数据,安全芯片与刷卡器主芯片互相独立,保证密钥存储及数据及加密安全
2)、支持PSAM卡加密认证机制
3)、一机一密
每个刷卡器一个主密钥,互相不同,互不影响,彻底杜绝密钥泄露风险
4)、一次一密
每次交易都产生一个工作密钥用于加密敏感数据,工作密钥由主密钥进行保护,每笔交易都不相同,杜绝恶意程序伪造交易的风险。
5)、密码保护
密码采用专用安全键盘输入,安全键盘每次使用的时候重新初始化键盘布局,防止恶意监听;
采用按键无状态模式(是当用户按下软键盘中的某个按键,并不绘制按下和释放的形状态)避免恶意程序对系统键盘的截取或者对屏幕进行截屏和录屏;用户输入的密码采用非对称加密传输。
6)、SSL安全传输
客户端与后台采用ssl加密安全通道通讯,保证数据传输安全。
相对于现在如今的网银金融服务,安全性是可以看得到的,网银没有什么加密,很容易感染木马病毒,但是我们优刷手机pos机是防止木马病毒的侵害的。优刷手机pos机全国招代理
第四篇:刷行天下手机pos机行业领导者
移动支付发展趋势vs
大家知道移动支付一直是银行卡新兴支付非常引人注目的支付工具,最近两年在中国以及亚洲地区移动支付的发展成为银行卡产业支付模式和渠道创新的热点问题。在未来的三年或者五年,移动支付对整个支付业会产生什么样的影响?那么移动支付的发展趋势又是怎样的呢?在手机支付、移动支付的交流大会上北京展翔中联科技发展有限公司()总裁孙启超先生做了“移动支付的发展趋势及展望”报告,深切的剖析移动支付的实质以及对手机支付、移动支付的展望。在大会中孙总说道:“伴随着银行借记卡以及信用卡逐渐普及、商业交易的随时随地性,以及移动网络的发展,传统的支付方式已经不能满足人们生活中的支付需求。在不久的将来,手机支付将会成为人们生活中的主要支付方式。现在的支付手段要求第一位的是安全性的,第二是需要很方便,第三是需要个人化,准确的知道这次是谁支付的。另外对金融系统来讲,希望在资金的调度和拆借上有很快的周转性,所以手机支付基本上满足了这些所有要求。而且巴塞尔协定决定报出号码是申请帐户,报出密码是身份认证,这些功能可以通过任何一个信息网络主张我的协议权,手机支付是最好满足了这些,因为它把身份认证和帐户管理集成在一起,变得非常简单。在移动支付时代已经到来的今天,我们北京展翔中联科技发展有限公司()研发出刷行天下手机pos机(),将pos刷卡收费、借记卡转账、信用卡还款、公共事业缴费、机票火车票购买等功能集于一机,为你提供最前卫、最便捷的支付方式”。在此次大会结束前孙总将刷行天下手机pos机所有功能一一展示,并得到了出席大会的各大金融行业领导的一致认可。
在此,我们相信在孙总的领导下,北京展翔中联科技发展有限公司()研发的刷行天下手机pos机()将会为我们提供一个快捷、安全、随心、随意的支付环境。
第五篇:手机Android系统常用控件总结
找工作,上长沙英才网
手机Android系统常用控件总结
Notepad++编写 可以负责粘贴到其中去 看得更清楚。(内容包括了Android中的大部分常用控件及其事件的监听)第一章
1.1 Android中src文件夹包含项目的所有包及其资源文件,res文件夹包含了项目中所有的资源。比如:程序图标(drawable),布局文件(layout),常量(value),音频文件(raw)R.java是在创建项目是自动生成的只读文件,不可更改此文件。R文件其作用:是定义项目中所有资源的索引文件。
1.2 AndroidManfest.xml 如下:
package=“Android.Summary” //引用程序包名 android:versionCode=“1” android:versionName=“1.0”> 找工作,上长沙英才网
1.3 String.xml如下:
Resources r = this.getContext().getResources();//通过Context的getResource()实例化一个Resources对象
String app_name =((String)r.getString(R.string.app_name));//然后通过getString()方法取得指定的索引的字符串。项目中所有常量都可以在String.xml文件中定义
String hello =((String)r.getString(R.string.hello));
1.4 main.xml如下:
找工作,上长沙英才网
android:orientation=“vertical” //版面配置的方式。此为自上到下为垂直配置,“horizontal”为水平配置 android:layout_width=“fill_parent” //定义当前视图在屏幕上所占的宽度,“fill_parent”为填充整个屏幕宽度 /*android:layout_weight=“50”*/ //用于给一个布局中多个视图的重要度赋值 android:layout_height=“fill_parent” //定义当前视图在屏幕上所占的高度,...........................高度 > android:text=“@string/hello” //在视图上显示的内容,此处引用了@String中的hello字符串 />
1.5 src下的java 如下: package Android.Summary;
import android.app.Activity;import android.os.Bundle;
public class SummaryActivity extends Activity { //继承自Activity /** Called when the activity is first created.*/ @Override
找工作,上长沙英才网
public void onCreate(Bundle savedInstanceState){ //重写onCreate()方法
super.onCreate(savedInstanceState);setContentView(R.layout.main);//设置要显示的布局 } } 第二章
2.1 Android应用程序由四个模块组成:Activity,Service,Intent,ContentProvider(注意:一个应用程序不一定包含全部的四个模块).在使用时必须在AandroidManfest中进行声明。
Activity可以理解为用户看到屏幕,主要用于处理应用程序的整体性工作。如: a.监听系统事件,触屏事件,为用户显示指定的View,启动其他Activity等。b.所有应用的Activity都继承于android.app.Activity,该类是Android提供的基层类。
c.一个Activity通常就是一个单独的屏幕。d.每一个活动都被实现为一个独立的类。e.大多数的应用程序都是由多个Activity组成。
Intent Aandroid中主要用Intent类实现从一个Activity跳转到另一个Activity。在Intent的描述结构中,有两个重要的部分:动作和对应的数据。
典型的动作有MAIN,VIEW,PICK,EDIT.而动作对应的数据则以URI的形式表示。例如:要查一个人的联系方式,需要创建一个动作类型View的Intent ,以及一个表示这个人的URI.Intent的使用:
button1.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent();//创建一个Intent对象
intent.setClass(Activity01.this,Activity02.class);//指明要启动的另一Activity02 startActivity(intent);//启动一个新的Activity
找工作,上长沙英才网
Activity01.this.finish();//关闭当前Activity01 } });这里需要注意在Android中对新启动的Activity进行声明。声明方式:
IntentReceiver 如果希望Android应用能够对外部事件(如电话打入时,数据网络可用时,)做出响应,可用使用IntentReceiver.虽然IntentReceiver在如上事件发生
时会使用NotificationManager通知用户,但它并不能生产UI。IntentReceiver可以在AndroidManifest.xml中注册,也可在代码中使用Context.registerReceiver 进行注册。当IntentReceiver被触发时,系统会在需要的时候启动应用。各种应用还可以通过ContentReceiver()将他们自己的IntentReceiver广播出去。???????
Content Provider 作用:主要用于不同应用程序中的数据的传递。Content Provider 是一个特殊的存储数据的类型。Android自身提供现成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore 应用可用通过唯一的ContentResolver界面来使用具体的Conten Provider,然后可以用ContentResolver提供的方法来使用你需要的Content Provider 其中,ContentResolver提供的方法有query(),insert(),update()等。URI----String形式的Content Provider的完整路径。
下面这个这个例子通过ContentProvider获取电话本中的数据,然后显示到TextView中去。
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){
找工作,上长沙英才网
TextView textView = new TextView(this);//得到TextView对象 String string = “";super.onCreate(savedInstanceState);
ContentResolver resolver = getContentResolver();//得到ContentResolver对象 Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得电话本中开始一项的光标,通过query方法查询出符合标准的电话本记录 //向下移动光标
while(cursor.moveToNext()){ //取得联系人名字
int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String name = cursor.getString(name_index);//取得电话号码
int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);String number = cursor.getString(number_index);
string +=(name+”:“+number+”n“);} cursor.close();textView.setText(string);//设置TextView显示的内容
setContentView(textView);//显示到屏幕上 其实TextView也是View的一种 } } 注意:在使用这些模块中用到了读取联系人的API,所以必须在AndroidManifest.xml中声明
声明方式为:
找工作,上长沙英才网
Service 后台服务,没有界面
启动service方法: a.Context.startService()b.Context.bindService()//与上一种方法不同处 如果这个Service没有处于启动状态,则将其启动
下面这个例子以Activity中的俩个控件来控制播放一首Mp3.(例中:需要在res文件夹中创建一个raw文件夹 然后放入一首MP3)
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);
//从main.xml布局中获得Button对象
Button button_start =(Button)findViewById(R.id.start);Button button_stop =(Button)findViewById(R.id.stop);//设置按钮(Button)监听
button_start.setOnClickListener(start);button_stop.setOnClickListener(stop);} //开始按钮
private OnClickListener start = new OnClickListener(){ public void onClick(View v){ //开启Service startService(new Intent(”com.yarin.Android.MUSIC“));} };//停止按钮
找工作,上长沙英才网
private OnClickListener stop = new OnClickListener(){ public void onClick(View v){ //停止Service stopService(new Intent(”com.yarin.Android.MUSIC“));} };}
public class MusicService extends Service{ //MediaPlayer对象
private MediaPlayer player;
public IBinder onBind(Intent arg0){ return null;} public void onStart(Intent intent, int startId){ super.onStart(intent, startId);//这里可以理解为装载音乐文件
player = MediaPlayer.create(this, R.raw.test);//开始播放 player.start();}
public void onDestroy(){ super.onDestroy();//停止音乐-停止Service player.stop();} }
AndroidManifest.xml文件中
找工作,上长沙英才网
2.2 Aandrod的生命周期
public class Activity02 extends Activity{ private static final String TAG = ”Activity02“;
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main2);Log.v(TAG, ”onCreate“);} public void onStart(){ super.onStart();Log.v(TAG, ”onStart“);} public void onResume(){ super.onResume();Log.v(TAG, ”onResume“);} public void onPause(){ super.onPause();Log.v(TAG, ”onPause“);} public void onStop(){ super.onStop();Log.v(TAG, ”onStop“);
找工作,上长沙英才网
} public void onDestroy(){ super.onDestroy();Log.v(TAG, ”onDestroy“);} public void onRestart(){ super.onRestart();Log.v(TAG, ”onReStart“);} } 这些方法都是系统自动调用的。
第三章 3.1 事件处理
* 控件事件通过设置其控件的监听器来监听并处理事件 * 按键按下事件:通过重写onKeyDown方法 * 按键弹起事件:通过重写onKeyUp方法 * 触笔点击事件:通过实现onTouchEvent方法 * 示例中使用了Toast控件:
* Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
public class Activity01 extends Activity{
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);//获得Button对象
Button button_ok =(Button)findViewById(R.id.ok);
找工作,上长沙英才网
button_ok.setOnClickListener(new Button.OnClickListener(){------------------------//设置Button控件监听器
public void onClick(View v){ //这里处理事件
DisplayToast(”点击了OK按钮“);} });}
/* 按键按下所触发的事件*/ public boolean onKeyDown(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”按下:中键“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”按下:上方向键“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”按下:下方向键“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”按下:左方向键“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”按下:右方向键“);break;} return super.onKeyDown(keyCode, event);}
找工作,上长沙英才网
/* 按键弹起所触发的事件*/ public boolean onKeyUp(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”弹起:中键“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”弹起:上方向键“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”弹起:下方向键“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”弹起:左方向键“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”弹起:右方向键“);break;} return super.onKeyUp(keyCode, event);} //用于响应按键重复点击,官方API指出onKeyMultiple方法总是返回false,即它没有handle,因此必须重写才能实现-------------------此方法没用过具体情况怎么样不是很清楚?
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){
return super.onKeyMultiple(keyCode, repeatCount, event);}
/* 触笔事件*/
找工作,上长沙英才网
public boolean onTouchEvent(MotionEvent event){ int iAction = event.getAction();//利用getAction得到所执行的动作 if(iAction == MotionEvent.ACTION_CANCEL || iAction == MotionEvent.ACTION_DOWN || iAction == MotionEvent.ACTION_MOVE){ return false;} //得到触笔点击的位置 int x =(int)event.getX();int y =(int)event.getY();//将获得的坐标转成String类型的方法 DisplayToast(”触笔点击坐标:(“+Integer.toString(x)+”,“+Integer.toString(y)+”)“);
return super.onTouchEvent(event);}
/* 显示Toast */ public void DisplayToast(String str){ Toast.makeText(this, str, Toast.LENGTH_SHORT).show();} } 我们分析了一些常用事件处理方式。每一个键都对应一个键值。当然也可根据需要来改变一些键的功能,需要我们自己构建KeyEvent对象------------------有待进一步学习
构造KeyEvent对象的几种方法: KeyEvent(int action,int code);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState);
找工作,上长沙英才网
KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags);KeyEvent(KeyEvent origEvent,long EventTime,int newRepart);例:
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);} public boolean onKeyDown(int keyCode, KeyEvent event){ //这里构建KeyEvent对象,其功能为返回键的功能 //因此我们按任意键都会执行返回键功能
KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
//这里传入的参数就是我们自己构建的KeyEvent对象key return super.onKeyDown(key.getKeyCode(), key);} } 3.2 常用控件 Button xml设计
代码设计Button button = new Button(this);
找工作,上长沙英才网
button.setText(”我是Button“);button.setWidth(123);//设置宽度 button.setHeight(123);//设置高度
button.setTextColor(Color.BLUE);//设置文字颜色 button.setTextSize(123);//设置字体大小
button.setBackgroundColor(Color.BLUE);//设置控件背景色
监听器
button.setOnClickListener(new Button.OnClickListener(){//设置按钮的事件监听
public void onClick(View v){ //处理按钮事件产生一个Toast.利用button.getText()得到按钮显示的内容
Toast toast = Toast.makeText(Activity01.this, ”你点击了““+button.getText()+””按钮!“, Toast.LENGTH_LONG);//设置toast显示的位置
toast.setGravity(Gravity.TOP, 0, 150);//显示该Toast toast.show();} });-TextView 一个用来显示文本的控件 xml设计 找工作,上长沙英才网 android:text=”你好“/> android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:textSize=”30sp“ android:singleLine=”true“ android:layout_below=”@id/imageView_handler“//在什么下 android:gravity =”left“ //用于设置View中内容相对于View组件的对齐方式,android:layout_gravity//用于设置View组件相对于Container的对齐方式。 android:paddingLeft=”30px“ // 按钮上设置的内容离按钮左边边界30个像素 android:layout_marginLeft=”30px“ //整个按钮离左边设置的内容30个像素 android:layout_weight=”1“//控件权重 即占的比例 默认值为0 android:gravity=”center_horizontal“//水平居中 android:padding=”3dip“ 代码设计TextView textView = new TextView(this);//声明对象 textView.setTextColor(Color.RED);//设置字体颜色 textView.setTextSize(20);//设置字体大小 textView.setBackgroundColor(Color.BLUE);//控件背景色 textView.setText(”你好“)//显示的文字 textView.setHeight textView.setWidth textView.setVisibility(GONE/VISIBLE);//设置为不可见/可见 textView.setGravity(Gravity.CENTER);//设置文字权重 找工作,上长沙英才网 监听器TextView textView = new TextView(this);//得到对象 textview.setOnClickListener(new TextView.OnClickListener(){------------TextView监听器 public void onClick(View v){ } });---ImageButton 带图标的按钮 xml设计 代码中设计 imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代码中设计使用的图片(得到对象后) 监听器 imageButton.setOnClickListener(new Button.OnClickListener(){--------------ImageButton监听器 @Override public void onClick(View v){ //创建对话框 Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this) 找工作,上长沙英才网 .setTitle(”ImageButton2“).setMessage(”跳转到系统图片“).setPositiveButton(”确定“, new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which){ // TODO Auto-generated method stub imageButton2.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));} }).create();dialog.show();} });---EditText xml设计 代码设计EditText editText = new EditText(this);//得到EditText对象 editText.setTextSize(20);//设置字体大小 找工作,上长沙英才网 editText.setHint(”请输入账号“);//设置当m_EditText中为空时提示的内容 监听器 editText.setOnKeyListener(new EditText.OnKeyListener(){----------EditText监听器 @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2){ // 得到文字,将其显示到TextView中 m_TextView.setText(”文本框中内容是:“ + m_EditText.getText().toString());return false;} });--------------------CheckBox 多项选择 需要对没有按钮设置监听器 xml设计 checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){//对每个选项设置事件监听-------------------CheckBox监听器 @Override 找工作,上长沙英才网 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ if(m_CheckBox1.isChecked()){ DisplayToast(”你选择了:“+m_CheckBox1.getText());} } });----------------------Spinner 下拉列表 下面一个例子将可选内容通过ArrayAdapter和下拉列表连接起来。设置监听器 通过setVisibility方法设置当前显示项 main.xml 找工作,上长沙英才网 /> public class Activity01 extends Activity{ private static final String[] string = { ”O型“, ”A型“, ”B型“, ”AB型“, ”其他“ }; private TextView m_TextView;private Spinner m_Spinner;private ArrayAdapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_TextView =(TextView)findViewById(R.id.TextView1);m_Spinner =(Spinner)findViewById(R.id.Spinner1); //将可选内容与ArrayAdapter连接 adapter = new ArrayAdapter //设置下拉列表的风格 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //将adapter添加到m_Spinner中 m_Spinner.setAdapter(adapter); //添加Spinner事件监听 找工作,上长沙英才网 m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){--------------------------Spinner监听器 @Override public void onItemSelected(AdapterView> arg0, View arg1, int arg2, long arg3){ m_TextView.setText(”你的血型是:“ + string[arg2]);//设置显示当前选择的项 arg0.setVisibility(View.VISIBLE);} @Override public void onNothingSelected(AdapterView> arg0){ // TODO Auto-generated method stub });} } }---------RadioGroup , RadioButton 单选选择控件 一个单选选择由两部分组成,分别是前面的选择按钮和后面的内容。按钮通过RadioButton来实现,答案通过RadioGroup来实现 如果确定是选择哪一项那就要设置监听器setOnCheckedChangeListener.下面有一例子:本例中使用到了String.xml文件来定义常量。string.xml 找工作,上长沙英才网 main.xml 找工作,上长沙英才网 android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:text=”@string/RadioButton1“ /> public class Activity01 extends Activity{ TextView m_TextView;RadioGroup m_RadioGroup;RadioButton m_Radio1, m_Radio2, m_Radio3, m_Radio4; @Override 找工作,上长沙英才网 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_RadioGroup =(RadioGroup)findViewById(R.id.RadioGroup01);//获得RadioGroup对象 m_Radio1 =(RadioButton)findViewById(R.id.RadioButton1);//获得4个RadioButton对象 m_Radio2 =(RadioButton)findViewById(R.id.RadioButton2);m_Radio3 =(RadioButton)findViewById(R.id.RadioButton3);m_Radio4 =(RadioButton)findViewById(R.id.RadioButton4); /* 设置事件监听 */ m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){---------------------------RadioGroup监听器 @Override public void onCheckedChanged(RadioGroup group, int checkedId){ if(checkedId == m_Radio2.getId()){ DisplayToast(”正确答案:“ + m_Radio2.getText()+ ”,恭喜你,回答正确!“);}else{ DisplayToast(”请注意,回答错误!“);} } });} public void DisplayToast(String str)//显示Toast{ Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);//设置toast显示的位置 找工作,上长沙英才网 toast.setGravity(Gravity.TOP, 0, 220);//显示该Toast toast.show();} }--------------AutoCompletTextView 和MultiAutoCompleteTextView 作用:自动提示 下面例中用到了ArrayAdapter autoCompletTextView.xml //如何实现如果输入的字符不在其范围内的也能得到提示 是继承TextWatcher? 找工作,上长沙英才网 public class Control_Auto extends Activity { //implements TextWatcher{} public TextView textView_auto; private static final String[] string ={”ni hao“,”ni hao “,”ni hao ma“,”ni zheng de hao ma“,”nshis“}; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.autocompletetextview); //将可选内容与适配器ArrayAdapter连接 ArrayAdapter MultiAutoCompleteTextView multiAutoCompletTextView =(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);AutoCompleteTextView autoCompleteTextView =(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView); autoCompleteTextView.setAdapter(adapter);//将adapter添加到AutoCompletTextView中去 multiAutoCompletTextView.setAdapter(adapter);//将adapter添加到MultAutoCompleteTextView中去 multiAutoCompletTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());} } 找工作,上长沙英才网 /* //autoCompleteTextView.addTextChangedListener(this);---此为设置监听? * 例子中没有涉及到的属性(可在布局文件中设置): AutoCompleteTextView是EditText的子类,所以你可以对它的对象进行诸如外观/字体/颜色等属性值的设置。 completionThreshold:它的值决定了你在AutoCompleteTextView至少输入几个字符,它才会具有自动提示的功能。另,默认最多提示20条。 dropDownAnchor:它的值是一个View的ID,指定后,AutoCompleteTextView会在这个View下弹出自动提示。 dropDownSelector:应该是设置自动提示的背景色之类的。 dropDownWidth:设置自动提示列表的宽度。 你可以通过setAdapter()来给AutoCompleteTextView添加一个包含候选值列表的适配器(adapter)。--------此处没实现过? 然而,由于用户可以输入一些不在候选值列表的数据,AutoCompleteTextView不支 持selection listener。不过,你可以注册一个TextWacther用于当用户输入文本发生变化时发出通知。 -------------------------DatePicker,TimePicker 日期和时间 下例中首先需要在布局文件中定义DatePicker和TimePicker,然后通过Canlendar类获得系统时间,接着通过init方法将日期传给DatePicker, 并设置OnDateChangedListener来监听日期改变,当时间被改变时需要设置setOnTimeChangedListener监听来设置时间。datepicker_timepicker.xml 找工作,上长沙英才网 > 找工作,上长沙英才网 public class Date_Time extends Activity{//如何实现日期随系统不断变化?要联网才能实现?如何变换DatePicker和TimePicker样式(如颜色,图片等)? Calendar calendar;TextView textView_date_time;Button button_date_time1;Button button_date_time2;DatePicker datePicker;TimePicker timePicker;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.datepicker_timepicker);calendar = Calendar.getInstance();//得到日历对象 textView_date_time =(TextView)findViewById(R.id.textView_date_time1);button_date_time1 =(Button)findViewById(R.id.button_date_time1);button_date_time2 =(Button)findViewById(R.id.button_date_time2);datePicker =(DatePicker)findViewById(R.id.datePicker);timePicker =(TimePicker)findViewById(R.id.timerPicker); button_date_time1.setWidth(50);button_date_time1.setHeight(60);button_date_time1.setTextColor(Color.BLUE); timePicker.setIs24HourView(true);//设置为24小时制 //将日历初始化为当前系统日期,并设置监听器 datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),-------------DatePicker监听器 找工作,上长沙英才网 calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener(){//OnDateChangedListener监听日期的变化 @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){ //设置日期 calendar.set(1987,10,15);} }); timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){------------TimePicker监听器 @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute){ //设置时间 //calendar.set(1987,10,29,23,23,23);//年 月 日 小时 分钟 秒 textView_date_time.setText(”当前时间:“+hourOfDay+” : “+minute);} }); button_date_time1.setOnClickListener(new Button.OnClickListener(){//日期的监听---------------------------Button控件中设置DatePicker监听器 找工作,上长沙英才网 @Override public void onClick(View v){ new DatePickerDialog(Date_Time.this,new DatePickerDialog.OnDateSetListener(){ @Override public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth){ //设置日历 textView_date_time.setText(”农历“+year+” 年“+monthOfYear+” 月“+dayOfMonth+” 日“);} },calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();} }); button_date_time2.setOnClickListener(new Button.OnClickListener(){//时间的监听器----------------------------Button控件中设置TimePicker监听器 @Override public void onClick(View v){new TimePickerDialog(Date_Time.this, new TimePickerDialog.OnTimeSetListener(){ @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute){ //设置时间 找工作,上长沙英才网 textView_date_time.setText(”北京时间:“+hourOfDay+” : “+minute);} },calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();}});} } ---------------Menu 操作应用程序的菜单选项 第一个例子:通过XML文件来实现 menu_com.xml
public class Menu_Xml extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.此为所以显示的界面id);} public boolean onCreateOptionsMenu(Menu menu){//创建menu MenuInflater inflater = getMenuInflater();//设置menu界面
inflater.inflate(R.layout.menu_com, menu);
找工作,上长沙英才网
return true;} public boolean onOptionsItemSelected(MenuItem item){//处理菜单事件 switch(item.getItemId()){ case R.id.about: Menu_Xml.this.finish();case R.id.skip: Intent intent = new Intent();intent.setClass(Menu_Xml.this, Menu_add.class);//跳转到Menu_add中去
startActivity(intent);Menu_Xml.this.finish();} return true;} } =============== 第二个例子:在代码中生成Menu 此例中包含俩个方法 注意区分注释掉的为另一种增加Menu的方法
public class Menu_add extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.toast);} public boolean onCreateOptionsMenu(Menu menu){//创立menu /*为Menu添加内容参数:Menu.add()方法第一个参数表示给这个新增的菜单项分配一个分组号;
* 第二个参数表示给这个新增的菜单项分配一个唯一标识id;第三个参数为菜单项的序号;
找工作,上长沙英才网
* 第四个参数为菜单项的标题。
我们可以通过调用Menu.setItemShown()或者Menu.setGroupShown()方法来显示或隐藏一些菜单项。
这里要注意的一个地方是:菜单项的显示顺序是按代码中添加的顺序来的,也就是说Menu.add()方法
只能在菜单的最后面新增一个菜单项。另外,第一个参数的分组标识,不会改变菜单项的显示顺序。
方法一:
//menu.add(0,0,0,R.string.menu1);方法一 //menu.add(0,1,1,R.string.menu2);方法二:
SubMenu subMenu = menu.addSubMenu(1, 1, 2, ”选项“);//此方法和menu方法类似
subMenu.add(13,13,13, ”到Content_Menu“);subMenu.add(13,24,24,”到Menu_Xml“);
return true;} public boolean onOptionsItemSelected(MenuItem item){//处理Menu事件 switch(item.getItemId()){//getItemId()得到菜单项的ID,即上面的第二个参数 case 13: Intent intent1 = new Intent();intent1.setClass(Menu_add.this, Context_Menu.class);startActivity(intent1);Menu_add.this.finish();case 23: Intent intent = new Intent();intent.setClass(Menu_add.this, Menu_Xml.class);//跳转到其他界面中去
找工作,上长沙英才网
startActivity(intent);Menu_add.this.finish();break;} return true;} } ============== 第三个例子:Context Menu的创建:
概述:Android 的上下文菜单类似于PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以
注册上下文菜单,不过,最常见的是用于列表视图ListView的item。
注意:Android 的上下文菜单不支持图标或快捷键。
创建一个上下文菜单的步骤:
1.覆盖Activity 的onCreateContenxtMenu()方法,调用Menu 的add 方法添加菜单项(MenuItem)。
2.覆盖Activity 的onContextItemSelected()方法,响应上下文菜单菜单项的单击事件。
3.调用registerForContextMenu()方法,为视图注册上下文菜单。menu_com2.xml
找工作,上长沙英才网
public class Context_Menu extends Activity{ public TextView textView_context_Menu;public Button buttont_context_Menu;
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.menu_com2);textView_context_Menu =(TextView)findViewById(R.id.textView_context_Menu);buttont_context_Menu =(Button)findViewById(R.id.button_context_Menu);
registerForContextMenu(textView_context_Menu);registerForContextMenu(buttont_context_Menu);//这里的registerForContextMenu()也可以用下面的语句替代 //getContentView().setOnCreateContextMenuListener(this);}
找工作,上长沙英才网
//创建Context Menu public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){ if(v==textView_context_Menu){ menu.setHeaderTitle(”这个是什么?“);menu.add(0,0,0,”苹果“);menu.add(0,1,1,”猕猴桃“);}else if(v==buttont_context_Menu){ menu.setHeaderTitle(”我知道是什么了!“);menu.add(2,2,2,”不是苹果“);menu.add(2,3,3,”就是猕猴桃“);} super.onCreateContextMenu(menu, v, menuInfo);} //菜单单击响应 @Override public boolean onContextItemSelected(MenuItem item){ //获取当前被选择的菜单项的信息 switch(item.getItemId()){ case 1: Toast toast=Toast.makeText(Context_Menu.this, ”你点击了“+textView_context_Menu.getText(), Toast.LENGTH_LONG);toast.setGravity(Gravity.TOP, 100, 300);toast.show();break;case 3: Toast toast1=Toast.makeText(Context_Menu.this, ”你点击了“+buttont_context_Menu.getText(), Toast.LENGTH_LONG);toast1.setGravity(Gravity.TOP, 100, 300);toast1.show();break;
找工作,上长沙英才网
} return true;} } ============== 第四个例子:动态Menu 此为动态Menu的实现,采用的是代码布局(非XML布局)。此种Memu用在什么情况下,具体该怎么做?
public class Trends_Menu extends Activity{ LinearLayout linearLayout;TextView textView;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);linearLayout = new LinearLayout(this);linearLayout.setBackgroundColor(android.graphics.Color.BLUE);//设置背景色
linearLayout.setOrientation(linearLayout.VERTICAL);//设置布局方向
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);textView= new TextView(this);//创建TextView对象 textView.setBackgroundColor(Color.YELLOW);//设置背景颜色 textView.setText(”Trends_Men“);textView.setTextSize(50);//textView.setHeight(50);//textView.setWidth(100);textView.setTextColor(Color.RED);//设置字体颜色
找工作,上长沙英才网
linearLayout.addView(textView,params);//将textView添加到linearLayout中去
setContentView(linearLayout);//设置ui布局 } public boolean onPrepareOptionsMenu(Menu menu){ String string = textView.getText().toString();if(string.equals(”Trends_Menu“)){ menu.clear();//清掉菜单
MenuItem item = menu.add(0,1,1,”to Menu“);item.setIcon(android.R.drawable.alert_dark_frame);//android自带的图标 } if(string.equals(”Menu“)){ menu.clear();MenuItem item = menu.add(1,2,2,”to Trends_Menu“);item.setIcon(android.R.drawable.alert_light_frame);} menu.add(0,2,2,”Now is“+string);return super.onPrepareOptionsMenu(menu);} }
-------------ListView 一个用来显示列表的控件 xml设计
代码设计
第一个例子:
public class ListView3 extends ListActivity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);
找工作,上长沙英才网
String[] string={”华中科技“,”天龙大厦“,”科技园“,”天天乐园“};//string 是用来要存放的数据
//android.R.layout.simple_expandable_list_item_1为XML的配置文件, 用来设置列表中每一行的窗口 setListAdapter(new ArrayAdapter
* 在配置文件中要注意的是android:list 是系统自定义的不是随便可以取的,否则会出现找不到ListView ==================== 第二个例子: textView_chrild.xml 找工作,上长沙英才网 android:layout_height=”fill_parent“ android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:text=”no date“ android:textSize=”30sp“ />
找工作,上长沙英才网
找工作,上长沙英才网
map1.put(”list1“, ”map1“);map2.put(”list1“, ”map2“);list1.add(map1);list1.add(map2);//定义一个List,该List对象为第一个一级条目 提供数据 List
//定义一个List,该List对象用来存储所有二级条目对象 List>> list0 = new ArrayList
>>();list0.add(list21);list0.add(list31);
SimpleExpandableListAdapter simple = new SimpleExpandableListAdapter(找工作,上长沙英才网
this,//context list1,//一级条目数据
R.layout.expandable_group,//用来设置一级条目样式的布局文件 new String[]{”list1“}, //指定一级条目数据的Key new int[]{R.id.textView_group},//指定一级条目数据显示的控件id list0, //二级条目数据
R.layout.expandable_chrild,//用来设置二级条目样式的布局文件 new String[]{”list“}, //指定二级条目数据的Key new int[]{R.id.textView_chrild});//指定二级条目数据显示的控件id
setListAdapter(simple);//将SimpleExpandableListAdapter对象设置给当前的Activity } } ============================= 第三个例子:自定义ListView public class ImageTextView extends LinearLayout{ public TextView textView;public ImageView imageView;
public ImageTextView(Context context, String string,Drawable drawable){----* 注意这里并没用在xml定义控件
super(context);// TODO Auto-generated constructor stub this.setOrientation(VERTICAL);//设置为水平布局 imageView = new ImageView(context);imageView.setImageDrawable(drawable);imageView.setPadding(2, 5, 5, 0);//设置位置
addView(imageView,new LinearLayout.LayoutParams(40,30));
找工作,上长沙英才网
textView = new TextView(context);textView.setText(”title“);textView.setTextSize(20);addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,30));
textView = new TextView(context);textView.setText(”title“);textView.setTextSize(20);addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,30));} * 这是一个线性布局的View,其中包含一个TextView 和一个ImageView.* 且为垂直布局 }-----------------------public class ListCombinAdapter extends BaseAdapter{------------继承BaseAdapter 且必须重写五个函数 private Context wcontext;private List
public ListCombinAdapter(Context context){ this.wcontext=context;list = new ArrayList
找工作,上长沙英才网
} @Override public Object getItem(int position){ return list.get(position);//得到对象在List数组中的位置 } @Override public long getItemId(int position){ return(long)position;} public long getPosition(Object item){ return list.indexOf(item);//得到对象在list中的索引 } @Override public View getView(int position, View convertView, ViewGroup parent){//得到一个显示在屏幕上的View ImageTextView imageTextView;if(convertView == null){//判断原来的View是否存在 如果不存在利用ImageTextView创建一个View imageTextView = new ImageTextView(wcontext,(String)list.get(position).textView.getText(),list.get(position).imageView.getDrawable());}else{ imageTextView =(ImageTextView)convertView;//强制转型 imageTextView.textView = list.get(position).textView;imageTextView.imageView = list.get(position).imageView;} return imageTextView;} public void addItem(String text,Drawable drawable){ list.add(new ImageTextView(wcontext,text,drawable));//将创建好的ImageTextView对象加入到list中去
找工作,上长沙英才网
} }----------------------public class ListView4Activity extends ListActivity {//定制自己的adapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);//setContentView(R.layout.main);//不需要此项
ListCombinAdapter listCombinAdapter = new ListCombinAdapter(this);listCombinAdapter.addItem(”不知道此处的字符串起什么作用“,getResources().getDrawable(R.drawable.image2));listCombinAdapter.addItem(”不知道此处的字符串起什么作用“, getResources().getDrawable(R.drawable.image3));setListAdapter(listCombinAdapter);} } ===================== 第四个例子: simpleadapter2.xml 找工作,上长沙英才网 android:orientation=”horizontal“> 找工作,上长沙英才网 android:gravity=”right“ android:textSize=”10pt“ />
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);ArrayList