• Android <Android应用开发实战> 学习总结杂项


    1.系统相册默认保存地址:android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera";

    File[] list = file.listFiles(new FileFilter() {
      @Override
      public boolean accept(File pathname) {
        if (pathname.lastModified() > maxTime)
          return true;
        return false;
      }
    });

    2.读取assets目录中的文件(返回InputStream对象)
    InputStream ins = getResources().getAssets().open("xx.html");
    assets目录中的内容和res aw目录中的内容相同,都会按原样被封装在apk文件中

    3.在属性中引用资源的语法详解:
    @[<package_name>:]<resource_type>/<resource_name>
    >>1、R类的package,如果R类的package与Manifest.xml中定义的package相同,可以不指定package,如果引用android系统资源,就需要引用package,如:@android:string/copy;
    >>2、R的子类的名称;
    >>3、资源的文件名(不包含扩展名)或xml资源文件中标签的android:name属性值;

    4.Bundle对象读取传递对象
    Bundle相当于一个Map对象,可能存取key-value类型的值,在不同activity中传递数据可以通过Bundle对象传递;
    Intent.putExtra()方法实际上在Intent类的内部也是通过使用Bundle对象来存取数据的。如下以putExtra(String,boolean)为例.

        public Intent putExtra(String name, boolean value) {
            if (mExtras == null) {
                mExtras = new Bundle();
            }
            mExtras.putBoolean(name, value);
            return this;
        }

    Activity在释放和装载的过程中也会利用Bundle对象来存取一些值,以便可以恢复Activity之前的状态;
    保存:
    当Activity对象被释放时,系统会调用Activity.onSaveInstanceState方法保存释放之前的状态(主要是一些变量的值);
    protected void onSaveInstanceState(Bundle outState)
    此方法只有一个Bundle类型的参数,可以利用此参数保存变量的值。
    恢复:
    恢复变量的值可以在Activity.onCreate()方法或Activity.onRestoreInstanceState()中完成,系统先调用onCreate(),再调用onRestoreInstanceState()
    protected void onCreate(Bundle savedInstanceState)
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    两个方法都有一个Bundle类型的参数,可以使用此参数恢复变量的值,如果没有保存任何值,则两个参数值都为null,因此恢复变量的值时得先判断savedInstanceState的值是否为null;
    onSaveInstanceState和onRestoreInstanceState分别用来保存和恢复状态,但它们不会因为当前Activity状态的主动变化而调用,只有在当前Activity受到外力使状态改变的情况下才会被调用;也就是说比如当来电,Home键回到桌面等情况下由于其它操作使Activity状态发生改变,系统才会调用这两个方法;

    5.处理Activity配置属性改变
    通过配置android:configChanges属性值处理配置的变化,配置此属性之后系统会调用onConfigurationChanger()方法处理配置改变事件;如果没有配置此属性,在切换横竖屏的时候,Activity会调用onCreate方法;

        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            // 处理屏幕方向变化
            if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                // newConfig.orientation == Configuration.ORIENTATION_PORTRAIT;
            }
            // 处理键盘配置变化
            if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
                // newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
            }
        }

    屏幕适配定义原则:大分辨率x小分辨率
    在res文件夹下新建一个layout-480x320文件夹,在此文件夹下添加一个布局文件,和layout文件夹下的文件名称一样,如果软件运行在480x320的手机平台上会自动使用此文件夹下的布局文件;
    如果想要添加一个运行在320x240的手机上的layout,就需要添加一个layout-320x240文件夹,如果没有相匹配的分辨率,会默认使用layout文件夹下的布局文件;

    6.解决EditText自动弹出软件盘事件,只需要在控件的父级控件中加入如下两个属性即可阻止EditText自动弹出软件盘

            android:focusable="true"
            android:focusableInTouchMode="true"
  • 相关阅读:
    c# 创建多线程
    使用opencvsharp通过mvvm在image中显示图片
    c# 创建文件/文件夹对话框
    wpf MVVM框架基础
    wpf DataBinding
    layui自动点击下拉列表的一项并选中
    LayUI默认样式调整
    mysql取某个组的前n条数据
    Kali3.0系统切换中文
    JS触发某元素周围元素的样式改变
  • 原文地址:https://www.cnblogs.com/a284628487/p/3134762.html
Copyright © 2020-2023  润新知