Android一些琐碎知识点(不定时更新)

一、@id与@+id的区别

@id : 引用现有的资源,类似@string  这样的做法易于统一管理。

    具体用法:

<resources>

    <item name="topview" type="id"/>
    <item name="viewpager" type="id"/>
    <item name="indicator" type="id"/>
    <item name="innerscrollview" type="id"/>
    <item name="descriptionview" type="id"/>
</resources>

 
 

@+id :如果在@后面使用“+”,表示当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就

是“/”后面的值,例如,@+id/xyz会在R.java文件中生成int xyz = value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名

的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。

二、用隐式intent注意的问题

1.如果你定义了其他的category,记得加上<category android:name="android.intent.category.DEFAULT" />  在addCategory可以不加入它,因为默认添加的

三、onActivityResult的用法

常见作用,一般是返回数据给启动它的Activity

流程:1. startActivityForResult(intent, 2);//启动你的Activity,2是请求参数,可以换其他的。用来返回时做requestCode判断的,一一对应的。
    2. Intent intent = new Intent();
       intent.putExtra("data", "hellokitty");
       setResult(RESULT_OK, intent);//返回数据,RESULT_OK可以换其他的,用来做resultCode判断,一一对应的。
   3.@Override
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         // TODO Auto-generated method stub
       switch (requestCode){
       case 2:
        if(resultCode == RESULT_OK){
             String resultData = data.getStringExtra("data");
             Toast.makeText(this, resultData, Toast.LENGTH_SHORT).show();
        }
        break;
        }
       }


基本流程就这样,至于传什么数据,再封装就好了

四、启动活动的最佳方法

启动代码写在你要启动活动中,用一个方法封装,参数就是你要传的参数。

如:public class SecondActivity extends Activity{

public static void actionStart(Context context,String data1.String data2){

Intent it = new Intent(context,SecondActivity.class);

intent.putExtra("param1",data1);

....

context.startActivity(intent);

}

}

五、引入布局

<include layout="@layout/title" />

六、透明度百分比转16进制算法

     255*透明度百分比的结果转换为16进制即可,计算的有小数的,进一位取整。

    如30%    255*30% = 76.5 -->77     77转16进制为4D

七、Button去掉阴影

android:stateListAnimator="@null"

八、布局文件自定义控件自定义属性

xmlns:nineGridLayout="http://schemas.android.com/apk/res/com.yiban1314.yiban"  (后面是应用完整包名)

九、仅仅修改桌面图标或者名称

<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_icon_merry"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:label,Android:icon, android:theme">//这很关键

十、invalidate()与postInvalidate()区别

Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 

Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 

十一、软键盘的显示和隐藏

private InputMethodManager imm;

imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

显示:imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);

隐藏:imm.hideSoftInputFromWindow(et_comment.getWindowToken(), 0);

十二、控件获取焦点

Android:focusableInTouchMode属性设置为true,当触摸值设为ture,当触摸某个控件时,会先将焦点移动到被触摸的控件上,然后需要再触摸该控件才会响应单击事件

十三、本地sd卡地址

Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/VID_20170722_201000.mp4"

十四、listview隐藏分割线和滑动条

android:divider="@null"
android:scrollbars="none"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值