打包升级兼容适配

meta-data标签读取以及多渠道打包原理

//解决报错flavorDimensions "versionCode"productFlavors {Tencent {//投放应用宝市场}Baidu {
//            manifestPlaceholders=[UMENG_CHANNEL_VALUE:"baidu"]}Wandoujia {//投放豌豆荚市场}
//        Vivo {//投放vivo市场
//        }
//        Oppo {//投放oppo市场
//        }
//        Xiaomi {//投放小米市场
//        }
//        Meizu {//投放魅族市场
//        }
//        Huawei {//投放华为应用市场
//        }
//        Lenovo {//投放联想市场
//        }
//        Letv {//投放乐视市场
//        }
//        Gionee {//投放金立市场
//        }
//        HiMarket {//投放安卓市场
//        }}//注意我注释掉的,可以去掉注释,那样的话,下面这句就可以不用了productFlavors.all {flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]}

屏幕适配,国际化

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.untils17"><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:name=".MyApplication"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><meta-data android:name="design_width-1" android:value="800"></meta-data><meta-data android:name="design_height-1" android:value="1280"></meta-data><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-data android:name="design_width" android:value="800"></meta-data><meta-data android:name="design_height" android:value="1280"></meta-data></application></manifest>

PackageManager pm = getPackageManager();
//获取宽高
try {ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);int width = info.metaData.getInt("design_width-1");int height = info.metaData.getInt("design_height-1");Log.i(TAG, "onCreate: 高"+height);Log.i(TAG, "onCreate: 宽"+width);
} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();
}

AutoLayout框架使用以及dp pxsp单位换算
package com.example.untils17;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;
import com.zhy.autolayout.AutoLayoutActivity;
import com.zhy.autolayout.utils.AutoUtils;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AutoLayoutActivity {ListView listView;List<JsonBean.DataBean> data = new ArrayList<>();private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = findViewById(R.id.listView);new Thread(new Runnable() {@Overridepublic void run() {OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=10&page=1").execute(new StringCallback() {@Overridepublic void onSuccess(Response<String> response) {String body = response.body();Gson gson = new Gson();JsonBean jsonBean = gson.fromJson(body, JsonBean.class);data = jsonBean.getData();}});}}).start();MyAdapter myAdapter = new MyAdapter();listView.setAdapter(myAdapter);myAdapter.notifyDataSetChanged();//        PackageInfo info = pm.getPackageArchiveInfo(getPackageName(), PackageManager.GET_CONFIGURATIONS);PackageManager pm = getPackageManager();//获取宽高try {ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);int width = info.metaData.getInt("design_width-1");int height = info.metaData.getInt("design_height-1");Log.i(TAG, "onCreate: 高"+height);Log.i(TAG, "onCreate: 宽"+width);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}}public class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int i) {return data.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder holder;if (view == null){holder = new ViewHolder();view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item,null);holder.textView = view.findViewById(R.id.title_id);holder.imageView = view.findViewById(R.id.pic_ic);//设置分配律用在view上AutoUtils.autoSize(view);}else {holder = (ViewHolder) view.getTag();}holder.textView.setText(data.get(i).getTitle());Glide.with(MainActivity.this).load(data.get(i).getPic()).into(holder.imageView);return view;}public class ViewHolder{private TextView textView;private ImageView imageView;}}
}
import android.content.Context;public class Utils {public static int px2dip(Context context,float pxValue){//px转dpfinal float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue/scale+0.5f);}public static int dip2px(Context context,float dpValue){//dp转pxfinal float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue*scale+0.5f);}
}

张萌韩墨羽——打包升级兼容适配相关推荐

  1. 张萌韩墨羽——Ument_Share集成

    Ument_Share集成 U-Share集成 适用范围 该文档适用于Android组件化分享SDK6.9.0及以上版本. 更新说明 如果您想进行SDK升级操作,请根据如下情况选择合适的升级方式 如果 ...

  2. 张萌韩墨羽——android摄像头推流

    android摄像头推流 功能概述 摄像头推流,是指采集手机摄像头的画面以及麦克风的声音,进行编码之后再推送到直播云平台上.腾讯云 LiteAVSDK 通过 TXLivePusher 接口提供摄像头推 ...

  3. 张萌韩墨羽——Android蓝牙

    蓝牙 是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据交换 关于蓝牙的权限主要涉及到下面三个: BLUETOOTH:允许配对的设备进行连接 BLUETOOTH_ADMIN:允 ...

  4. 张萌韩墨羽——CommonTabLayout使用

    CommonTabLayout使用 音乐 package com.example.banner_use.fragment; import android.graphics.Canvas; import ...

  5. 张萌韩墨羽——BroadCast 广播

    BroadCast 广播 广播作用以及机制 其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机 ...

  6. 移动端开发的屏幕、图像、字体与布局的兼容适配

    本文是内部的一次分享沉淀,偏向基础但是涉及了一些有意思的细节,文笔有限,才疏学浅,文中若有不正之处,万望告知. 前端的一大工作内容就是去兼容页面在不同内核的浏览器,不同的设备,不同的分辨率下的行为,使 ...

  7. 【适配】521- 移动端开发各种兼容适配问题(屏幕、图像、字体与布局等)

    来源 | https://www.cnblogs.com/coco1s/p/11463599.html 本文是内部的一次分享沉淀,偏向基础但是涉及了一些有意思的细节,文笔有限,才疏学浅,文中若有不正之 ...

  8. 前端基础知识概述 -- 移动端开发的屏幕、图像、字体与布局的兼容适配

    本文是内部的一次分享沉淀,偏向基础但是涉及了一些有意思的细节,文笔有限,才疏学浅,文中若有不正之处,万望告知. 前端的一大工作内容就是去兼容页面在不同内核的浏览器,不同的设备,不同的分辨率下的行为,使 ...

  9. 移动端开发的兼容适配与性能优化干货分享

    作者:ChokCoco https://www.cnblogs.com/coco1s/p/11463599.html 本文是内部的一次分享沉淀,偏向基础但是涉及了一些有意思的细节,文笔有限,才疏学浅, ...

最新文章

  1. 迪克森沉思录之做Global SAP项目的弊端
  2. 【大会】技术决策背后的商业逻辑
  3. Dubbo xml配置 和注解配置 写法
  4. 利用优先级队列实现堆栈
  5. android keyguard,Android8.1 SystemUI Keyguard之指纹解锁流程
  6. mysql数据库用doc命令_MySQl数据库常用的DOS命令
  7. 免费45天WPS稻壳会员领取
  8. 选择排序的Java代码实现(超详细代码)
  9. ROC曲线面积AUC详解
  10. “码头工人”的Docker进阶之路:从轻装上路到网络、存储和安全
  11. C++ 求解最小公倍数
  12. Java 递归实现树形菜单
  13. php 获取月份的周数,PHP获取当前月份的周数只能使用php
  14. 2021年如何折腾小米平板2,装上win11
  15. 实用的配音软件推荐,确定不来看看?
  16. 你应该掌握的浏览器相关知识
  17. 你真的分清楚子序列和全排列了吗?【建议收藏】
  18. 忘记计算机网络域名密码,自己家里wifi密码忘记了怎么办?
  19. SAP中KKS5/KKS6事务计算投入产生差异逻辑
  20. RK3368评测 RK3368方案 RK3368方案设计 RK3368性能如何 RK3368设计定制

热门文章

  1. HTML+css+javascript面试题
  2. Vue清除定时器优化方案
  3. 机器学习实战(三):Classification
  4. 自己动手搭建一个简单的静态资源服务器
  5. 内网安全-域横向内网漫游Socks代理隧道技术
  6. 磁条卡磁道笔记(2)
  7. 磁条卡芯片卡读写器|写卡器MCR200的安装与操作说明
  8. Linux 文本 sed 命令 碱基对 替换
  9. 各种HIC处理数据之间的相互转化
  10. 多传感器数据融合发展综述