android 开发的步骤
16lz
2021-12-04
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()就是获取实例二 。。。。自定义adapter1。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 @Overrideprotected 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{@Overridepublic void onDrawerOpened() {iv.setImageResource(R.drawable.icon);} } class MyDrawerCloseListener implements OnDrawerCloseListener{@Overridepublic void onDrawerClosed() {iv.setImageResource(R.drawable.bt03);} } class MyOnclick implements OnClickListener{@Overridepublic void onClick(View v) { } } 八。 两个页面间回调函数 A activity 中重写onActivityResult方法 @Overrideprotected 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{@Overridepublic void onClick(View arg0) {Intent intent=new Intent(MainActivity.this, b.class); //startActivityForResult跳转,并设定回调值MainActivity.this.startActivityForResult(intent, 1);} } 在B Activity中 @Overrideprotected 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; }@Overridepublic 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后调用该方法 */@Overridepublic IBinder onBind(Intent arg0) {binder2=new MyBinder();return binder2;}/* 解除绑定Activity和Service时调用该方法 */@Overridepublic boolean onUnbind(Intent intent) {return super.onUnbind(intent);}/* 重新绑定Activity和Service时调用该方法 */@Overridepublic void onRebind(Intent intent) {super.onRebind(intent);}/* 当服务第1次创建时调用该方法,只执行一次 */@Overridepublic void onCreate() {super.onCreate();}/* 当开始服务时调用该方法,执行多次 */@Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);}/* 当服务销毁时调用该方法,只执行一次 */@Overridepublic 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{@Overridepublic 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存在,拿到最顶端,不会启动新的Activityintent.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,再次跳转不会在运行这个Activityintent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android之获取屏幕和视图高和宽
- android 中如何限制 EditText 最大输入字符数(2)
- Android(安卓)系统应用调用,intent 的使用方法总结
- Android各种获取Context方法
- android 8.1 开机壁纸下半部分黑屏2-3秒的问题解决
- 详解Android使用@hide的API的方法