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
- android笔记
- android笔记
- android笔记
- Android笔记
- Android笔记
- android笔记
- android 笔记
- android笔记
- Android笔记
- android笔记
- Android笔记
- Android笔记
- android笔记
- android笔记
- android笔记
- android 笔记
- android 笔记
- Android笔记
- android中下载加速
- 求满足条件的行数据相减求差值问题
- Error when loading the SDK
- 制作Ubuntu deb包的三种方法
- 注册用户添加Js和Ajax验证
- android笔记
- 安卓开发 将字符串用MD5加密
- STM32中的PWM的频率和占空比的设置
- iOS开发-swift基础学习二
- 方法重写
- 魅族MX3换屏日志
- iPhone 6S GPU到底多强
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 如何在现成项目集成ReactNative(Android)