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); 

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android之获取屏幕和视图高和宽
  5. android 中如何限制 EditText 最大输入字符数(2)
  6. Android(安卓)系统应用调用,intent 的使用方法总结
  7. Android各种获取Context方法
  8. android 8.1 开机壁纸下半部分黑屏2-3秒的问题解决
  9. 详解Android使用@hide的API的方法

随机推荐

  1. Android(安卓)之 ContentProvider的简介-
  2. Android面试系列文章2018之Android部分Ha
  3. Android(安卓)个别手机导航键覆盖布局解
  4. Android(安卓)开发技巧总结
  5. Android(安卓)Studio 设置背景色
  6. 坑中速记整理! 使用 kotlin 写第一个 Rea
  7. EditText 行间距 以及光标高度和样式
  8. Android高手进阶教程(八)之----Android(
  9. Android(安卓)Adapter使用总结
  10. android 编译自己的sdk