android编程举例4_第1页
android编程举例4_第2页
android编程举例4_第3页
android编程举例4_第4页
android编程举例4_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、表格布局:Main.xml<?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="<TableRow android:id="+id/TableRow01" and

2、roid:layout_width="wrap_content" android:layout_height="wrap_content"><TextView android:id="+id/label" android:layout_height="wrap_content" android:layout_width="160dip"android:gravity="right" android:text="用户名:" android:pad

3、ding="3dip" ></TextView><EditText android:id="+id/entry" android:layout_height="wrap_content" android:layout_width="160dip"android:padding="3dip" ></EditText></TableRow><TableRow android:id="+id/TableRow02" and

4、roid:layout_width="wrap_content" android:layout_height="wrap_content"><Button android:id="+id/ok" android:layout_height="wrap_content" android:padding="3dip" android:text="确认"></Button><Button android:id="+id/Button02

5、" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="3dip" android:text="取消"></Button></TableRow></TableLayout> 功能描述:主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity

6、后,将用户输入的用户名和密码传递到主界面中。 编程要点:主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;分别使用显示启动和隐式启动的方式,启动新的Activity;用户名中不能出现“”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“*”,同时只能为数字; 返回的用户名和密码要以Toast的方式显示出来; MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。两个布局xml代码类似上面的布局,故省略,自己模仿MainActivity.jav

7、apublic class MainActivity extends Activity protected int SUBACTIVITY1 = 1;/唯一标示子activity标识码private static String TAG = "MainActivity"/用来在运行时显示activity日志,即上面要求的第五条Button button1,button2;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layo

8、ut.main);Log.i(TAG, "(1) onCreate()");/日志上显示onCreate()button1 = (Button) this.findViewById(R.id.button1);button2 = (Button) this.findViewById(R.id.button2);button1.setOnClickListener(new View.OnClickListener() public void onClick(View v) Intent intent = new Intent(MainActivity.this,UserLog

9、inActivity.class);Toast.makeText(getApplicationContext(), "显示启动", Toast.LENGTH_SHORT).show();startActivityForResult(intent, SUBACTIVITY1); );button2.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent("cn.test.nchu");Toast.makeText(

10、getApplicationContext(), "隐式启动", Toast.LENGTH_SHORT).show();startActivityForResult(intent, SUBACTIVITY1););protected void onActivityResult(int requestCode, int resultCode, Intent data) super.onActivityResult(requestCode, resultCode, data);if (resultCode = RESULT_OK) Uri uriData = data.getD

11、ata();Toast.makeText(getApplicationContext(), uriData.toString(),Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicationContext(), "用户名和密码为空", Toast.LENGTH_SHORT).show();/可视生命周期开始时被调用,对用户界面进行必要的更改 public void onStart() super.onStart(); Log.i(TAG, "(2) onStart()"); /在onStar

12、t()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息 public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState); Log.i(TAG, "(3) onRestoreInstanceState()"); /在活动生命周期开始时被调用,恢复被onPause()停止的用于界面更新的资源 public void onResume() super.onResume(); Log.i(TAG,

13、 "(4) onResume()"); / 在onResume()后被调用,保存界面信息 public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState); Log.i(TAG, "(5) onSaveInstanceState()"); /在重新进入可视生命周期前被调用,载入界面所需要的更改信息 public void onRestart() super.onRestart(); Log.i(TAG, &quo

14、t;(6) onRestart()"); /在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。 public void onPause() super.onPause(); Log.i(TAG, "(7) onPause()"); /在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源 public void onStop() super.onStop(); Log.i(TAG, "(8) onStop()"); /在完全生命周期结束时被调用,释放资源,包括线程、数据连接等 public void onDestroy

15、() super.onDestroy(); Log.i(TAG, "(9) onDestroy()"); UserLoginActivity.javapublic class UserLoginActivity extends Activity EditText username,password;Button submit,reset;private static String TAG = "MainActivity"protected void onCreate(Bundle savedInstanceState) / TODO Auto-gener

16、ated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.login); Log.i(TAG, "(1) onCreate()");username=(EditText)this.findViewById(R.id.username);password=(EditText)this.findViewById(R.id.password);submit=(Button)this.findViewById(R.id.submit);reset=(Button)this.findViewB

17、yId(R.id.reset);username.setFocusable(true);username.setOnKeyListener(new OnKeyListener()public boolean onKey(View v, int keyCode, KeyEvent event) / TODO Auto-generated method stubint unicodeChar = event.getUnicodeChar();if(unicodeChar= 64)return true;else return false;);submit.setOnClickListener(ne

18、w View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubString name =username.getText().toString();String pass=password.getText().toString();String uriString="用户名:"+name+"密码:"+pass; Uri data = Uri.parse(uriString); Intent result = new Intent(null, da

19、ta); setResult(RESULT_OK, result);finish(););reset.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubsetResult(RESULT_CANCELED, null);finish(););下面和MainActivity.java中的一样都是设置activity生命周期在log中显示AndroidManifest.xml<?xml version="1.0"

20、 encoding="utf-8"?><manifest xmlns:android=" package="cn.test.nchu" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="drawable/icon" android:label=&qu

21、ot;string/app_name"> <activity android:name=".MainActivity" android:label="string/app_name"> <intent-filter> <action android:name="ent.action.MAIN" /> <category android:name="ent.category.LAUNCHER" /> </

22、intent-filter> </activity><activity android:name="cn.test.nchu.UserLoginActivity" >/显式启动要加的activity <intent-filter> <action android:name="cn.test.nchu" />/隐式启动,名字和MainActivity.java中的隐式启动里的名字一样 <category android:name="ent.category.DEFA

23、ULT" /> </intent-filter> </activity> </application></manifest>编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供IntCompare(Int, Int)函数,输入两个整数,输出较大的整数。 主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;分别使用启动方式和绑定方式使用Service;分别使用Handle和AsyncTask更新

24、TextView中的内容。启动方式MainActivity.javapublic class MainActivity extends Activity public static int maxNum;public static Handler handler=new Handler();private static TextView result=null;private static Button compare=null;private static Button reset=null;private static EditText one=null;private static Ed

25、itText two=null;public static void UpdateGUI(int refreshDouble)maxNum=refreshDouble;handler.post(RefreshLable); private static Runnable RefreshLable=new Runnable()public void run() result.setText(String.valueOf(maxNum); public void onCreate(Bundle savedInstanceState) final Bundle mybundle=new Bundle

26、(); super.onCreate(savedInstanceState); setContentView(R.layout.main); final Intent intent=new Intent(MainActivity.this,CompareService.class); result=(EditText)findViewById(R.id.result); compare=(Button)findViewById(Rpare); reset=(Button)findViewById(R.id.reset); one=(EditText)findViewById(R.id.one)

27、; two=(EditText)findViewById(R.id.two); compare.setOnClickListener(new OnClickListener() public void onClick(View v) mybundle.putString("one", one.getText().toString(); mybundle.putString("two", two.getText().toString(); intent.putExtras(mybundle); startService(intent); ); reset.

28、setOnClickListener(new OnClickListener() public void onClick(View v) one.setText(null); two.setText(null); result.setText(null); ); CompareService.javapublic class CompareService extends Service private Thread workThread;Bundle bundle=null;int one=0,two=0;public void onCreate() super.onCreate(); wor

29、kThread = new Thread(null,backgroudWork,"WorkThread");public void onStart(Intent intent, int startId) super.onStart(intent, startId); bundle=intent.getExtras(); String c1=bundle.getString("one"); String c2=bundle.getString("two"); if(!c1.toString().equals("")&

30、amp;&!c2.toString().equals("") one=Integer.parseInt(c1); two=Integer.parseInt(c2); if (!workThread.isAlive() workThread.start(); public IBinder onBind(Intent intent) return null;private Runnable backgroudWork = new Runnable()public void run() int randomDouble =IntCompare(one,two);MainA

31、ctivity.UpdateGUI(randomDouble);stopSelf();int IntCompare(int a,int b)if(a>=b)return a;elsereturn b;这样并没有完,还要在AndroidManifest.xml中加入service名字,如<application 。(和前面的AndroidManifest.xml代码相同) <service android:name=".CompareService" ></service></application>绑定启动MainActivi

32、ty.Javapublic class MainActivity extends Activity private boolean isBound = false;private CompareService compareService;int a=0,b=0; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView result=(TextView)findViewById(R.id.re

33、sult); Button compare=(Button)findViewById(Rpare); Button reset=(Button)findViewById(R.id.reset); final EditText one=(EditText)findViewById(R.id.one); final EditText two=(EditText)findViewById(R.id.two); if(!isBound)Intent serviceIntent=new Intent(MainActivity.this,CompareService.class);bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE);isBound=true; compare.setOnClickListener(new OnClickList

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论