1.UIAutomatorViewer自己主动化測试是Android測试的趋势,稳定\复用,最经常使用的工具就是Espr"/>

Android开发Tips

Posted lytwajue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发Tips相关的知识,希望对你有一定的参考价值。

欢迎Follow我的GitHub, 关注我的CSDN.

我会介绍关于android的一些有趣的小知识点. 本文是第三篇, 其余第一篇, 第二篇.

技术分享


1. UIAutomatorViewer

自己主动化測试是Android測试的趋势, 稳定\复用, 最经常使用的工具就是Espresso.
使用UIAutomatorViewer获取资源的Id,
位置/android-sdk/tools/uiautomatorviewer, 点击就可以使用.

技术分享


2. GitHub标签

网址, 比方:
技术分享
技术分享


3. 有趣的改动SVG库

地址, 载入SVG格式的图片, 改动颜色属性.

技术分享


4. 请求和生成的Json插件

JSONOnlineViewer, 网络请求插件, 获取Json数据, 位置View->JSONViewer.
GsonFormat, 依据Json自己主动生成类的插件, 在Command+N里面.

附一张插件的截图, 其它任意.

技术分享


5. Retrofit2+Okhttp3的Interceptor设置方式

Retrofit升级到beta3版本号, 使用了最新Okhttp3, Interceptor的设置方式发生改变.

旧版

OkHttpClient client = new OkHttpClient().Builder();

HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
MarvelSigningInterceptor signingInterceptor = new MarvelSigningInterceptor(
    BuildConfig.MARVEL_PUBLIC_KEY, BuildConfig.MARVEL_PRIVATE_KEY);

client.interceptors().add(signingInterceptor);
client.interceptors().add(loggingInterceptor);

替换, 新版

        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);

        MarvelSigningInterceptor signingInterceptor = new MarvelSigningInterceptor(
                BuildConfig.MARVEL_PUBLIC_KEY, BuildConfig.MARVEL_PRIVATE_KEY);

        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(signingInterceptor)
                .addInterceptor(loggingInterceptor)
                .build();

否则可能会发生: HTTP 409 Conflict, 未输入正确的验证方式, 私钥错误.


6. okhttp-logging-interceptor输出log信息

參考, 能够输出log信息, 使用, 当前版本号是3.0.1.

compile "com.squareup.okhttp3:logging-interceptor:${libs.okhttp}"

输出參考:

D/OkHttp: <-- 200 OK http://gateway.marvel.com/v1/public/characters?

offset=0&... (1552ms, unknown-length body)


7. 透明statusbar和全屏ImageView

status bar设置成为透明颜色.

    <style name="AppTheme.NoStatusBar">
        <item name="android:windowTranslucentStatus">true</item>
    </style>

页面的根布局是CollapsingToolbarLayout.

<android.support.design.widget.CollapsingToolbarLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@null"
        android:fitsSystemWindows="true"
        android:scaleType="centerCrop"
        android:src="@drawable/christmas"/>

</android.support.design.widget.CollapsingToolbarLayout>

效果
技术分享


8. Android Studio模板

位置: File->Other Settings->Default Settings->Editor->Live Templates
熟练之后, 依据简写+Tab就能够使用了, 当然也能够自己加入.

技术分享

自己定义模板:
缩写(Abbreviation), 描写叙述(Description), 内容(Template text), 应用场景, 格式化.
技术分享


9. 推荐动画效果的站点

网址, 站点里面有非常多好玩的动画效果, 并且都是编程实现, 方便移植, 如雪花效果.


10. ListView的ViewHolder

Android官方推荐使用RecyclerView取代ListView, 可是非常多守旧的人不想这么做, 那么, 也须要使用ViewHolder提升载入速度. 參考.

基本使用方法.

static class ViewHolder() {
    TextView testName;
    TextView testDesc;
}

...

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;

    // 初始化ViewHolder
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) parent.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView = inflater.inflate(R.layout.view_test_row, parent, false);
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.testName = (TextView) rowView.findViewById(R.id.test_tv_name);
        viewHolder.testDesc = (TextView) rowView.findViewById(R.id.test_tv_desc);
        rowView.setTag(viewHolder);
    }

    // 使用ViewHolder
    ViewHolder holder = (ViewHolder) rowView.getTag();
    holder.testName.setText("Test: " + position);
    holder.testDesc.setText("This is number " + position + ". ");

    return rowView;
}

OK, that’s all! Enjoy it.










以上是关于Android开发Tips的主要内容,如果未能解决你的问题,请参考以下文章

Android开发常用代码片段

Android开发Tips

Android开发Tips

Android日常开发收集的Tips

Android-Tips(实用Android开发技巧)

Android-Tips(实用Android开发技巧)