android笔记

来源:互联网 发布:ntp校时服务器端口 编辑:程序博客网 时间:2024/06/07 12:37

 重点易混淆知识点:

1:getX是基于父控件的X位置  

2:   getRawX是从屏幕最左边开始的X

3:获取在当前窗口内的绝对坐标,getLeft , getTop, getBottom, getRight,  这一组是获取相对在它父窗口里的坐标。

4:   right =left+width

5:  bottom=top+height 

6:  getLocationOnScreen():在整个屏幕中的位置     getlocationOnWindow():相对于父控件的位置

7:getMeasureWidth和View.getWidth :

①getMeasuredWidth方法获得的值是setMeasuredDimension方法设置的值,它的值在measure方法运行后就会确定

②getWidth方法获得是layout方法中传递的四个参数中的mRight-mLeft,它的值是在layout方法运行后确定的

③一般情况下在onLayout方法中使用getMeasuredWidth方法,而在除onLayout方法之外的地方用getWidth方法。



不太常用但是很重要的知识点:

1:

/** * 自动初始化所有控件 */private void autoInitAllWidgets() {    // 得到该Activity的所有字段    Field[] fields = this.getClass().getDeclaredFields();    for (Field field : fields) {        // 反射访问私有成员,必须加上这句        field.setAccessible(true);        try {            int id = R.id.class.getField(field.getName()).getInt(new R.id());            // 然后对这个属性赋值            field.set(this, this.findViewById(id));        } catch (Exception e) {        }    }}

2: 获取手机里的图片

    /*     * 从相册获取     */    public void gallery() {        // 激活系统图库,选择一张图片//        Intent intent = new Intent(Intent.ACTION_PICK);//        intent.setType("image/*");//        startActivityForResult(intent, PHOTO_REQUEST_GALLERY);        Intent intent = new Intent(                Intent.ACTION_PICK,                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);        startActivityForResult(intent, PHOTO_REQUEST_GALLERY);    }    /*     * 从相机获取     */    public void camera() {        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");        // 判断存储卡是否可以用,可用进行存储        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {            intent.putExtra(MediaStore.EXTRA_OUTPUT,                    Uri.fromFile(new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME)));        }        startActivityForResult(intent, PHOTO_REQUEST_CAMERA);    }

3:软键盘搜索和其他功能

在xml文件中,对EditText的设置如下:加上属性:android:imeOptions=""

actionSearch: 搜索actionSend:  发送actionNext:   下一项
同样,也可在activity代码中设置imeOptions:editText.setImeOptions(EditorInfo.IME_ACTION_SEND);  Activity中监听事件 :editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId,                   KeyEvent event)  {                          if (actionId==EditorInfo.IME_ACTION_SEND ||(event!=null&&event.getKeyCode()== KeyEvent.KEYCODE_ENTER)) {                //do something;              return true;             }               return false;           }       });

4:EditText进制输入表情

  mEditTextView.addTextChangedListener(new TextWatcher() {               @Override              public void afterTextChanged(Editable editable) {
int index = mTvContent.getSelectionStart() - 1;String s1 = s.toString();if(s1.length()>0){    if (EmojiUtils.containsEmoji(s1)) {        AMToast.show(PostActivity.this, "不能输入表情", Toast.LENGTH_SHORT);        Editable text = mTvContent.getText();        text.delete(index, index + 1);    }}
12 }13 14 @Override15 public void beforeTextChanged(CharSequence s, int start, int count, int after) {16 17 }18 19 @Override20 public void onTextChanged(CharSequence s, int start, int before, int count) {21 22 }23 });
复制代码




0 0