【Android】其它问题记录

2019-05-09  本文已影响0人  irenb

1. 包名显示切换

记录1 - 包名显示切换

2. 设置启动页面

记录2 - 设置启动页面

3. 隐藏导航栏


默认显示 actionBar
去掉 actionBar 的显示

4. match_parent 和 wrap_content 的区别

5. 目前常用的网络框架

6. 项目中如何引入第三方框架

使用 Gradle 引入框架时,编译项目 Android Studio 就会自动帮我们去下载。


举例说明:
如果一个 App 依赖于 libA,libA 又依赖于 libB,使用 implementation 时 App 不可以调用 libB 中的方法,使用 compile 时则可以调用。推荐还是 implementation,避免跨依赖调用,导致模块之间耦合性过高,管理起来混乱。

compile 或 api 关键字作用效果是一样的,使用时可以互相替换。实际上,api 关键字是用来替代 compile 关键字的,因为 compile 关键字将来会被弃用(Android Studio 3.0 以后已废弃)。在高版本的 gradle,使用 compile 关键字会报错并提示使用 api 关键字代替。

7. 设置全屏显示(隐藏系统状态栏)

// 设置全屏显示(隐藏系统状态栏),支持Android2.0以上
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

8. 在清单文件中添加网络访问权限

<uses-permission android:name="android.permission.INTERNET" />

在 Android 6.0 之前是通用的,直接在 AndroidManifest.xml 文件中进行注册即可。
在 Android 6.0 之后加入了运行时权限,申请权限访问需要两步:
1》先在清单文件 AndroidManifest.xml 文件中进行注册
2》在运行的时候,还要使用代码来申请。

9. okttp 框架简单的使用

/* 一个简单的网络请求 */
public void getNewListData() {
    // 1.创建 OkHttpClient 实例对象
    OkHttpClient client = new OkHttpClient();
    // 2.创建 Request 对象
    Request request = new Request.Builder()
            .url("https://3g.163.com/touch/reconstruct/article/list/BBM54PGAwangning/0-10.html")
            .get()
            .build();
    // 3.执行 Request 请求(异步执行)
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            // 请求失败
            e.printStackTrace();
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()) {
                // 请求成功,获取接口的数据
                String data = response.body().string();
                Log.i("okHttp的请求结果:", data);
            } else {
                // 请求失败
                Log.i("okHttp的请求失败:", null);
            }
        }
    });
}

10. gson 框架简单的使用

// 判断字符串是否为空
if (!TextUtils.isEmpty(data)) {
    // 数据解析:Json字符串转对象
    Ads ads = new Gson().fromJson(data, Ads.class);
    if (null != ads) {
        Log.i("数据解析成功", ads.toString());
    }
}

11. service 和 intentService

12. 加载网络图片(glide 框架)

implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
Glide.with(this).load(imageUrl).into(adsImageView);
// 或
Glide.with(this).load(imageUrl).placeholder(R.drawable.loading_spinner).into(adsImageView);
// 在主线程中更新UI
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // 执行更新操作
    }
});
Random rand = new Random();
int randNum = rand.nextInt(N);
// 生成 0-N 之间的随机数,包括 0,不包括 N。
// 给图片设置点击事件
adsImageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});

13. Java中没有枚举类型,在实际开发中要学会定义常量来代替枚举类型

// 建造师
public static final int TYPE_BUILDER = 0;
//人员
public static final int TYPE_WORKER = 1;

int mType = TYPE_BUILDER;
上一篇 下一篇

猜你喜欢

热点阅读