美文网首页
总结的一点小知识

总结的一点小知识

作者: 那些云 | 来源:发表于2018-01-19 15:38 被阅读15次

1、在APP国际化中,当按钮上的字符从中文变成英文后,字符串会自动全部大写,可以用 android:textAllCaps="false" 属性,控制字符串是否自动大写。

2、当APP有设置生效需要重启APP时,可以重启到欢迎页面,这样交互比较好看,而且不会出现重启到主界面时的白屏或者黑屏。

3、当接口返回的数据有int类型数据时,为避免日后返回的数据突然不是int类型,所以写模型时int类型的数据,统一都用String来接收。

4、如果想让EditText不自动取得焦点,则可以在EditText的父布局设置

android:focusable="true"  
android:focusableInTouchMode="true" 

属性,即可。

5、在使用RecyclerView时,有时候会需要刷新RecyclerView中item的状态,一般我们可能使用notifyDataSetChanged()来刷新状态,但是使用notify系列的方法时有可能会导致失去焦点(这是一个BUG),因此我们可以使用局部刷新来刷新item的状态。

ViewHolder viewHolder = (ViewHolder) mRecyclerView.findViewHolderForAdapterPosition(position);
viewHolder.mCheck.setBackgroundResource(R.mipmap.collect_normal);

6、当APP存在账号切换功能时,如果APP内有数据是使用数据库来存储的,则在数据库帮助类中不要使用单列模式,否则切换账号后,会出现数据混乱的情况。

7、使用Glide加载图片时,有的图片第一次加载的时候只显示占位图,第二次才显示正常的图片。网上搜到集中解决方案,第一个是不使用占位图(对于我来说没用),第二是使用Glide的Transformation API自定义圆形Bitmap的转换。第三是不使用Glide的动画,加上一条.dontAnimate() (我就是这样解决的)。

8、getChildAt(int position)方法中position指的是当前可见区域的第几个元素,如果要得到position所对应的item,则应该使用View view = listview.getAdapter().getView(position,null,listview);

9、在Java中有Float.NaN 和 Double.NaN ,意思是Not a Number ,非数,是计算机科学中数值数据类型的一个值,表示未定义或不可表示的值。目前只在使用MPAndroidChart时,处理数据是使用到了,如果不想让MPAndroidChart绘制线条时,当数据为空,可以传入一个Double.NaN 或 Float.NaN,而不是传入0.

10、电脑上打jar包
(1)新建一个manifest.txt文件,在里面写一句就可以了:Manifest-Version: 1.0
(2)然后把manifest.txt的后缀改成.mf即变成了manifest.mf
(3)进入cmd,进入准备打包的那个根目录,这里把要打包的文件夹与manifest.mf放在了一个cd目录下
(4)输入:jar cvfm Notepad.jar manifest.mf Notepad
注:jar 是打包命令;cvfm 是参数; Notepad.jar 是打完包后的文件名;
参数c表示要生成一个新的JAR文件;f表示要生成的JAR文件的名字;m表示文件清单文件的名字。
*.class 只能把 class 文件打包进去,改成 . 可以把当前目录中的文件和文件夹全部打包进去。
(5)这里输入根目录或直接输入要打包的目录都可以,打出来的包是相同的

11、关于Fragment(XXFragment)not attached to activity 的异常
出现此异常是因为Fragment还没有attach到Activity,调用了getResource()等需要上下文context的函数。 解决方法是在调用此类方法前,先使用 isAdded()判断。

12、在适配Android7.0时,我们需要将Uri.parse、Uri.fromFile、file://、conteng://、context.getFilesDir()、Environment.getExternalStorageDirectory()、getCacheDir()、以及intent.setDataAndType 等做适配修改。首先需要定义一个FileProvider在Manifest.xml中,

<application>
    ...
    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths"/>
    </provider>
    ...
</application>

其中grantUriPermissions需要设置为true,你才能获取临时共享权限。
然后我们在res-xml下新建filepaths.xml文件,文件名随意,需要与上面resource中的一致。

<?xml version="1.0" encoding="utf-8"?>  
<resources>  
    <paths>  
        <!--  
        <files-path/>代表的根目录: Context.getFilesDir()  
        <cache-path/>代表的根目录: getCacheDir()  
        <external-path/>代表的根目录: Environment.getExternalStorageDirectory()  
        <external-files-path/>代表的根目录: Context.getExternalFilesDir(String) Context.getExternalFilesDir(null).  
        <external-cache-path />代表的根目录: Context.getExternalCacheDir().  
        <root-path />代表设备的根目录new File("/");  
        -->  
        <!-- path=""代表根目录,也可以指定特定目录,name="camera_picture"是虚拟目录camera_picture -->  
        <root-path name="root" path="" />  
        <files-path name="files" path="" />  
        <cache-path name="cache" path="" />  
        <external-path name="external" path="" />  
        <external-files-path name="external_files" path="" />  
        <external-cache-path name="external_cache" path="" />  
    </paths>  
</resources>  

在代码中,比如之前使用 Uri.fromFile() 方法生成一个 File Uri,现在我们需要使用FileProvider 类提供的公有静态方法 getUriForFile 生成 Content Uri。例如这里有个将Bitmap转换成Uri的方法:

public static Uri saveBitmap(Bitmap bm) {
        //在SD卡上创建目录
        File tmpDir = new File(AppUtils.getContext().getFilesDir() + "/images");
        if (!tmpDir.exists()) {
            tmpDir.mkdir();
        }

        File img = new File(tmpDir.getAbsolutePath() + "/" + System.currentTimeMillis()+ "share.png");
        try {
            FileOutputStream fos = new FileOutputStream(img);
            bm.compress(Bitmap.CompressFormat.PNG, 85, fos);
            fos.flush();
            fos.close();
            return FileProvider.getUriForFile(AppUtils.getContext(),
                    BuildConfig.APPLICATION_ID + ".provider", img);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
}

注意上面的.provider和Manifest.xml中的authorities中的要一样。

相关文章

  • 总结的一点小知识

    1、在APP国际化中,当按钮上的字符从中文变成英文后,字符串会自动全部大写,可以用 android:textAll...

  • 小知识总结:

    __block 和 __weak 的区别: __block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还...

  • 小知识总结

    1.块元素居中 position: absolute; top: 0; bottom: 0; left: 0; r...

  • 小知识总结

    1. UIScrollView或UITextView 滑动部分无故向下偏移,contentOffset增加64 2...

  • 小知识总结

    javaScript事件绑定和普通事件的区别:var btn = document.getElementById(...

  • 无标题文章

    综和复习本月知识点总结: 一:微信小程序 二:vue复习 三:js复习 四:新知识点 一:微信小程序知识点总结 开...

  • 内容小总结

    对自己这几周学习python的一点知识小总结。同时自身水平还很有限,目前甚至都算不上入门。 python语言是什么...

  • 2019-12-05 Login Button and Reco

    Salesforce小知识点总结:Enable the 'Administrators Can Login as ...

  • unity小知识总结

    给游戏物体添加tag值,获取tag gameObject.tag //设置游戏对象的tag值 gameObject...

  • android小知识总结

    1、绝对好使的跑马灯

网友评论

      本文标题:总结的一点小知识

      本文链接:https://www.haomeiwen.com/subject/naoooxtx.html