Android 知识积累一

1 Android 语言的国际化

internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,
localization(本地化 ),简称L10n。
一般用语言_地区的形式表示一种语言,如  zh_CN, zh_TW.

适配多种语言方法

在[Android](http://lib.csdn.net/base/android)工程的res目录下,通过定义特    
殊的文件夹名称就可以实现多语言支持。比如我们的程序兼容简体中文、
英文,在values文件夹中建立默认strings.xml,再建立values-zh-rCN文件
夹。

在每个文件夹里放置一个strings.xml,strings.xml里是各种语言字符串。如
果涉及到参数配置类xml文件夹名称也要改成xml-zh、xml。这样在android
的系统中进行语言切换,所开发的程序也会跟着切换语言。

2 Apk的签名文件的作用

作用是:就是区分apk身份的标识
签名完成后,你可以用winrar打开apk,在Meta-inf目录下,用文本编辑
器打开CERT.RSA文件,如果能看到部分你建的key时候输入的文本就是
正式签名了,如果测试签名会有debug字样。(一般情况会乱码,但是用
肉眼仔细观察,你就能略微的看清楚一些啦)值得提醒的就是,软件代
码更新后(需要发布新的APK了),要将ManifestAndroid:versionCode
值+1,每更新一次都要加1。

3 APK的发布

根据要发布的市场进行相关的操作,待完善中……

4 拼接jsonArray的方法

拼接JsonArray 用的方法是:
创建一个JsonArray 集合
通过创建JsonObject 对象,我们通过添加对象的形式进行拼接

如:JSONArray jsonArray = new JSONArray();
       JSONObject jsonObject1 = new JSONObject();
       jsonObject1.put("orderId", commentorderId);
       jsonObject1.put("verifyCount", commentnum);
       jsonArray.put(jsonObject1);
 有几个对象我们就以这个形式进行添加就可以了。

5 listview的Adapter中控件的点击事件总结

使用listview进行数据的展示,我们要点击item里面的控件,进行操作,
我们设置监听必须放在Adapter中的getview方法中进行,
第一种方法:如果我们要动态的获取条目的索引position,那么我们就必
须进行设置的监听必须直接进行书写,不是setOnclickListener(this)这
种,setOnclickListener(new OnclicLisenter){}这种。这样我们就可以
动态的获取position。
第二种方法:动态获取position我们还有另外的一种方法,就是通过我们
的插件黄油刀,我们在viewholder我们进行控件的初始化,对我们要进行
的控件设置点击事件,我们动态获取position用到的方法是,我们在
getview中通过viewholder.setPosition(position);通过这个方法,动态把
position传递给viewholder,在viewholder 中我们把这个postion保存成成
员变量。我们点击事件就可以直接使用这个position。

6 Activity向Fragment进行传值

项目中用到碎片时的困难,我们获取数据是在fragment 中进行获取的,
但是我们首先要初始一个页面,初始页面的时候我们如果需要Activiy 向
fragment 中进行传递参数,我们就需要在fragment进行动态替换之前进
行传递。
···
FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction ft = fragmentManager.beginTransaction();
            WaitRentFragment waitRentFragment = new 
WaitRentFragment();
            Bundle bundle = new Bundle();
            bundle.putString("rentOrderId",rentOderId);
            waitRentFragment.setArguments(bundle);
            ft.replace(R.id.fl_snowTools,waitRentFragment);
            ft.commit();
···
总结:我们传值用的是bundle进行传递。

7 fragment 碎片,

7.1 切换保存状态

我们动态切换页面要保存页面的状态,我们不能用replace,用hide 和 show,进行页面的切换
核心代码是:
我们首先进行fragment的初始化,把他们添加到集合中,如果我们进行
切换我们只需要调用switchFragment(int position),这个方法,把我们
fragment在集合的索引传递过去就完成了切换。
···
private void initFragment() {

    fragmentList.add(new WaitRentFragment());
    fragmentList.add(new WaitBackFragment());


    }
···
private void switchFragment(int position) {
    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
    for (int i = 0; i < fragmentList.size(); i++) {

        android.app.Fragment fragment = fragmentList.get(i);
        if (i == position) {
            if (fragment.isAdded()) {
                fragmentTransaction.show(fragment);
            } else {
                Bundle bundle = new Bundle();
                bundle.putSerializable("orderId", rentOderId);
                fragment.setArguments(bundle);
                fragmentTransaction.add(R.id.fl_snowTools, fragment);

            }


        } else {
            if (fragment.isAdded()) {

                fragmentTransaction.hide(fragment);

            }
        }
    }

    fragmentTransaction.commitAllowingStateLoss();
}

7.2 fragment向Activity进行传递值

//我们采用的方式是用回调的方式,例如我们fragment需要向依赖的
Activity进行传递值的场景,这个时候我们就需要回调进行数据的回传
···
fragment 中的代码
···
@Override
 public void onAttach(Activity activity) {
    super.onAttach(activity);

    callback = (CallBack) getActivity();

    }
//释放我们的activity,避免出现异常
@Override
    public void onDestroy() {
    super.onDestroy();
    callback = null;
    }
//定义回调接口,在我们需要回调数据的地方,调用callback.getData(传入我们需要回掉的数据);
public interface CallBack {

    void getData(String s);

    void getShowData(List data);
}
···
···
Activity中代码
我们首先要让我们的activity实现我们fragment中创建的接口,会实现
    我们接口定义好的方法,我们可以在这个方 法里进行我们的逻辑作
    业。
···

7.3 fragment向Activity传递数据自己遇到的坑

逻辑我们在这个fragment中通过回调把我们的data数据已经传递给我们的
activity,我们activity获得这个数据后,需要把其传递到我们租赁成功
面,进行数据的展示,我们报的错误是 传递的值是没有序列化,
但是我们的bean已经序列化了,这是个误区,我们还需要把其需要传递
的内部的类也进行序列化,这样我们就解决了这个问题。

8 Android 原生定义图片

使用shape 我们可以定义圆 椭圆 矩形 线,我们可以设置填充色

9 checkbox和TextinputLayout 选中和动画字体的颜色设置

9.1 checkbox 我们设置被选择的颜色

我们是定义一个style,通过colorAccent 设置选中的颜色
 

9.2 TextInputLayout 动态的字体的颜色设置

我们是通过主题的colorAccent 进行颜色的设置。

10 java String 串相关的API

10.1、indexOf() 方法,含义是返回指定字符第一出现的索引。

public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如.     果此字符串中没有这样的字符,则返回 -1。
public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

10.2、substring()方法

substring() 方法返回字符串的子字符串。
public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex)
beginIndex -- 起始索引(包括), 索引从 0 开始。如果没有限制endindex,会.       返回全部。
endIndex -- 结束索引(不包括)。

10.3、在项目中使用的地方是:

在给webview传cookie的时候,需要给域注入cookie     的.时候从整个url截取域     进行注入cookie的时候使用了两者结合的方式获取。
例如:String url ="https://www.baidu.com?index=1"
截取https://www.baidu.com
url.substring(0,url.indexof(".com")+4)

你可能感兴趣的:(Android 知识积累一)