android ui 事件触发机制 Activity 编写中一般为三部曲 1。bending视图 setContentView(R.layout.open); 2。初始化UI (Button)this.findViewById(R.id.ok); 3。绑定事件 ok.setOnClickListener(this); localhost 代表是本机ip 127.0.0.1 在android 模拟器上用 10.0.2.2访问你的电脑本机 因为在android中,每个应用程序是可以实现数据共享的, 对于每一个应用程序程序都拥有一个contentprovider实例进行存储, 而contentresolver则是用于管理所有程序的contentprovider实例, 通过contentrescolver可以获得数据,插入数据等……至于getcontentrescolver()就是获取实例 二 。。。。自定义adapter 1。extends baseAdapter类 2。构造一个有参方法 public UserListAdapter(Context context,List<User> list) { //2.1 取得布局管理器(为下面的获取自定义视图准备) layoutInflater = LayoutInflater.from(context); View view=layoutInflater.inflate(R.layout.list, null); } 3.在重写getView方法中编辑自定义视图 public View getView(int position, View convertView, ViewGroup parent) { ListItemView listItemView = null; if (convertView == null) { listItemView = new ListItemView(); //获取list_item布局文件的视图 convertView = layoutInflater.inflate(R.layout.list, null); //获取控件对象 listItemView.image = (ImageView)convertView.findViewById(R.id.IV_imageItem); listItemView.name= (TextView)convertView.findViewById(R.id.show_name); listItemView.age= (TextView)convertView.findViewById(R.id.show_age); listItemView.name.setText(list.get(position).getName()+""); listItemView.age.setText(list.get(position).getAge()+"岁"); listItemView.image.setImageResource(Integer.parseInt(list.get(position).getImage()+"")); //设置控件集到convertView convertView.setTag(listItemView); } return convertView; } ///4.反射机制drawble包下的所有图片 File[] fields=R.drawble.class.getDeclaredFields(); for(Filed field:fields){ index=field.getInt(R.drwable.class); //保存图片id imgList.add(index); } 三 。。。。自定义dialog 1。extends Dialog . 构造有参方法 (注意自定义dialog本身没有上下文的对象,所以要引入目标Activity对象IndexActivity) public NewBudleDialog(Context context,IndexActivity main) { super(context); this.context=context; this.main=main; } 2。 // 重写它的onCreate @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.open);//自定义布局 findView();//初始化控件 setListeners(); //监听 } 四 SimpleAdapter和gridview在帮助文档中挺好的 五 动态给editText赋值的时候,int类型要转换为String(不然报source Id String 错误) 六 Button和listItemOnClkic ,焦点覆盖问题 七 SlidingDrawer(上下屏车换) iv= (ImageView) this.findViewById(R.id.handle); drawer.setOnDrawerOpenListener(new MyDrawerOpenListener()); drawer.setOnDrawerCloseListener(new MyDrawerCloseListener()); } class MyDrawerOpenListener implements OnDrawerOpenListener{ @Override public void onDrawerOpened() { iv.setImageResource(R.drawable.icon); } } class MyDrawerCloseListener implements OnDrawerCloseListener{ @Override public void onDrawerClosed() { iv.setImageResource(R.drawable.bt03); } } class MyOnclick implements OnClickListener{ @Override public void onClick(View v) { } } 八。 两个页面间回调函数 A activity 中重写onActivityResult方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //tresultCode返回结果值 if(requestCode==1&this.RESULT_OK==resultCode) result=data.getExtras().getString("result"); Toast.makeText(this,result,Toast.LENGTH_LONG).show(); } class Mybnt implements OnClickListener{ @Override public void onClick(View arg0) { Intent intent=new Intent(MainActivity.this, b.class); //startActivityForResult跳转,并设定回调值 MainActivity.this.startActivityForResult(intent, 1); } } 在B Activity中 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.b); Intent intent=new Intent(); intent.putExtra("result","你通过了"); this.setResult(this.RESULT_OK,intent); this.finish(); } 九。contentProvider(数据提供者) 继承一个ContentProvider public class UserDao extends ContentProvider{ private DBHelper helper; private static final UriMatcher MATCHER=new UriMatcher(UriMatcher.NO_MATCH); public static final String PROVIDER_URL="com.org.userdao";//这里uri必须注册provider中authorities com.org.userdao static{ MATCHER.addURI(PROVIDER_URL, "qingyou", 1);//qingyou为表名称 MATCHER.addURI(PROVIDER_URL, "qingyou/#", 2); } @Override public boolean onCreate() { helper=new DBHelper(this.getContext()); return true; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int num=0; switch (MATCHER.match(uri)) { case 1: num=helper.getReadableDatabase().delete("qingyou",selection, selectionArgs); break; case 2: long id=ContentUris.parseId(uri); num=helper.getReadableDatabase().delete("qingyou","_id="+id, null); break; } return num; } 2.在activity中 //注意一定要加qingyou表名称和前缀content:// private Uri uri=Uri.parse("content://com.org.userdao/qingyou"); IndexActivity.this.getContentResolver().query(,,"name=? and password=?"); 十。receive(广播) 1.非常住性 Intent intent = new Intent(); intent.setAction("com.szy.aaBroadcastReceiver"); intent.putExtra("message", "又是一个好人!"); TestMainActivity.this.sendBroadcast(intent); //在extends BroadcastReceiverl类中 Bundle bundle = this.getResultExtras(false); String tt = bundle.getString("message"); 2.常住性广播 注册系统自带的action 3.有序广播 (按级别分,级别高得到先)//得到后可以截断:this.abortBroadcast(); 4.无序广播(同时发送) 十一。服务 // 1.public class MyService extends Service{ private MyBinder binder2; /* 成功绑定Activity和Service后调用该方法 */ @Override public IBinder onBind(Intent arg0) { binder2=new MyBinder(); return binder2; } /* 解除绑定Activity和Service时调用该方法 */ @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); } /* 重新绑定Activity和Service时调用该方法 */ @Override public void onRebind(Intent intent) { super.onRebind(intent); } /* 当服务第1次创建时调用该方法,只执行一次 */ @Override public void onCreate() { super.onCreate(); } /* 当开始服务时调用该方法,执行多次 */ @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); } /* 当服务销毁时调用该方法,只执行一次 */ @Override public void onDestroy() { super.onDestroy(); } public void aa(){ for(int i=0;i<50;i++){ try { Thread.sleep(600); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("aa"+i); } } //注意activity只提供绑定serviceconnection对象,而serviceconnection只能传递IBinder //所以只能通过他取得service对象 //创建一个binder,写一个方法为他返回要绑定的Service对象 class MyBinder extends Binder implements IBinder{ public MyService getMyService(){ return MyService.this; } } } 2.在activity中写 1.绑定 Intent intent = new Intent(MainActivity.this, MyService.class); /*MainActivity.this.startService(intent);*/ MainActivity.this.bindService(intent, serviceConection, Context.BIND_AUTO_CREATE); 2.解绑 /*MainActivity.this.startService(intent); 对应是MainActivity.this.stopService(intent)*/ MainActivity.this.unbindService(serviceConection); //创建ServiceConnection通过取得service的binder对象 class MyServiceConect implements ServiceConnection{ @Override public void onServiceConnected(ComponentName arg0, IBinder service) { myService = ((MyService.MyBinder) service).getMyService(); myService.aa(); myService.bb(); } //获取sdcard存放路径 String path=Environment.getExternalStorageDirectory()+"/";//获取外部设备路径 十二 作用 android中flag设置 Intent intent = new Intent(this,xxx.class); //如果activity在task存在,拿到最顶端,不会启动新的Activity intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); //如果activity在task存在,将Activity之上的所有Activity结束掉 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //默认的跳转类型,将Activity放到一个新的Task中 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //如果Activity已经运行到了Task,再次跳转不会在运行这个Activity intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
android 开发的步骤
猜你喜欢
转载自licjava.iteye.com/blog/2039977
今日推荐
周排行