android笔记

1 篇文章 0 订阅
1 篇文章 0 订阅

 重点易混淆知识点:

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);
    }
}
@Override
public
void beforeTextChanged(CharSequence s, int start, int count, int after) {
@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {});
复制代码

5:EditText清除不了焦点问题、

通过查看源码,控件焦点是一级一级遍历的,解决以上问题,只要在EdiitText父控件中加上:

android:focusableInTouchMode="true"

就可以解决了!

6:关于文件目录

绝对目录:即App在data/data/app包名所在的目录   :

context.getApplicationContext().getFilesDir()
        .getAbsolutePath()
        + IN_PATH
SD卡目录:
"/sdcard/" + packageName + "/cache/"
也可以  
Environment.getExternalStorageDirectory()


7:直接调转到APP外第三方地图
Uri mUri = Uri.parse("geo:39.940409,116.355257?q=西直门");
Intent mIntent = new Intent(Intent.ACTION_VIEW,mUri);
startActivity(mIntent);








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值