给我免费观看片在线百度seo自动优化
web/
2025/9/27 14:57:35/
文章来源:
给我免费观看片在线,百度seo自动优化,iis 网站目录权限设置,广州市外贸网站建设品牌https://codechina.csdn.net/mirrors/jessyancoding/androidautosize?utm_sourcecsdn_github_accelerator以上是Androidautosize的源码#xff0c;有兴趣的就去下下来搂一眼我这边还没看完#xff0c;就把最基础的看了一下#xff0c;然后顺了下简单的流程#xff0c;顺便…https://codechina.csdn.net/mirrors/jessyancoding/androidautosize?utm_sourcecsdn_github_accelerator以上是Androidautosize的源码有兴趣的就去下下来搂一眼我这边还没看完就把最基础的看了一下然后顺了下简单的流程顺便自己写了写试试来给大家看一眼。Androidautosize用起来很方便基础用法一共两步。第一步在你的项目里面引入Androidautosize像这样implementation me.jessyan:autosize:1.2.1第二步在你的AndroidManifest.xml 文件里面配置一下像这样android:namedesign_width_in_dpandroid:value360/android:namedesign_height_in_dpandroid:value640/然后就完事了。具体细节的使用方法大家可以百度其他文章这里就不在说了。之前也看过介绍这个框架的文章说是用的contentprovider做的但没细看。最近看了看顺便写了写就给大家搂一搂我们知道 ContentProvider 的执行时机非常的靠前靠前到什么程度呢在执行application之前就会执行ContentProvider 所以可以在ContentProvider里面拿AndroidManifest.xml的参数。先看下ContentProvider 的定义像这样public class AutoSizeProvider extends ContentProvider {Overridepublic boolean onCreate() {Context applicationContext getContext().getApplicationContext();AutoSizeConfig.getInstance().init((Application) applicationContext);return true;}NullableOverridepublic Cursor query(NonNull Uri uri, Nullable String[] projection, Nullable String selection, Nullable String[] selectionArgs, Nullable String sortOrder) {return null;}NullableOverridepublic String getType(NonNull Uri uri) {return null;}NullableOverridepublic Uri insert(NonNull Uri uri, Nullable ContentValues values) {return null;}Overridepublic int delete(NonNull Uri uri, Nullable String selection, Nullable String[] selectionArgs) {return 0;}Overridepublic int update(NonNull Uri uri, Nullable ContentValues values, Nullable String selection, Nullable String[] selectionArgs) {return 0;}我们可以看到里面有个oncreate()方法啥意思就不说了大家都懂然后我在这里面执行了两行代码我把其中相关的类给大家贴一下public class AutoSizeConfig {private static AutoSizeConfig sInstance;private String AUTO_SIZE_WIDTH_IN_DP_KEY sky_width_in_dp;//在文件中设置的默认宽度_KEYprivate String AUTO_SIZE_HEIGHT_IN_DP_KEY sky_height_in_dp;//在文件中设置的默认高度_KEYprivate int AUTO_SIZE_WIDTH_IN_DP_VALUE;//在文件中设置的默认宽度private int AUTO_SIZE_HEIGHT_IN_DP_VALUE;//在文件中设置的默认宽度private AutoSizeConfig() {}//单例对象public static AutoSizeConfig getInstance() {if (sInstance null) {synchronized (AutoSizeConfig.class) {if (sInstance null) {sInstance new AutoSizeConfig();}}}return sInstance;}//初始化参数public void init(Application application) {PackageManager packageManager application.getPackageManager();ApplicationInfo applicationInfo null;try {//拿到applicationinfo对象applicationInfo packageManager.getApplicationInfo(application.getPackageName(), PackageManager.GET_META_DATA);Bundle metaData applicationInfo.metaData;//在这里拿AndroidManifest里面的参数AUTO_SIZE_WIDTH_IN_DP_VALUE (int) metaData.get(AUTO_SIZE_WIDTH_IN_DP_KEY);AUTO_SIZE_HEIGHT_IN_DP_VALUE (int) metaData.get(AUTO_SIZE_HEIGHT_IN_DP_KEY);//这个是具体去执行适配方法的类贴在下面了LayoutSizeStrategy layoutSizeStrategy new DefaultLayoutSizeStrategy();//activity生命周期监听当监听到activity执行oncreate或者onstart时去修改系统的density和其他参数Application.ActivityLifecycleCallbacks callbacks new ActivityLifecycleCallbacksImpl(layoutSizeStrategy, application, AUTO_SIZE_WIDTH_IN_DP_VALUE, false);application.registerActivityLifecycleCallbacks(callbacks);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}}}生命周期监听在这public class ActivityLifecycleCallbacksImpl implements Application.ActivityLifecycleCallbacks {private LayoutSizeStrategy mLayoutSizeStrategy;private Application application;private int baseSize;private boolean isBaseOnWidth;public ActivityLifecycleCallbacksImpl(LayoutSizeStrategy mLayoutSizeStrategy, Application application, int baseSize, boolean isBaseOnWidth) {this.mLayoutSizeStrategy mLayoutSizeStrategy;this.application application;this.baseSize baseSize;this.isBaseOnWidth isBaseOnWidth;}Overridepublic void onActivityCreated(NonNull Activity activity, Nullable Bundle savedInstanceState) {Log.d(zhd, onActivityCreated: );if (mLayoutSizeStrategy ! null) {mLayoutSizeStrategy.applyStrategy(activity, application, baseSize, isBaseOnWidth);}}Overridepublic void onActivityStarted(NonNull Activity activity) {Log.d(zhd, onActivityStarted: );if (mLayoutSizeStrategy ! null) {mLayoutSizeStrategy.applyStrategy(activity, application, baseSize, isBaseOnWidth);}}Overridepublic void onActivityResumed(NonNull Activity activity) {}Overridepublic void onActivityPaused(NonNull Activity activity) {}Overridepublic void onActivityStopped(NonNull Activity activity) {}Overridepublic void onActivitySaveInstanceState(NonNull Activity activity, NonNull Bundle outState) {}Overridepublic void onActivityDestroyed(NonNull Activity activity) {}具体的执行适配代码的地方在这public class DefaultLayoutSizeStrategy implements LayoutSizeStrategy {private static float sNoncompatDesity;private static float sNoncompatScaledDensity;//在此执行改变的逻辑Overridepublic void applyStrategy(Activity activity, Application application, int baseSize, boolean isBaseOnWidth) {final DisplayMetrics appDisplayMetrics application.getResources().getDisplayMetrics();if (sNoncompatDesity 0) {sNoncompatDesity appDisplayMetrics.density;sNoncompatScaledDensity appDisplayMetrics.scaledDensity;application.registerComponentCallbacks(new ComponentCallbacks() {Overridepublic void onConfigurationChanged(NonNull Configuration newConfig) {if (newConfig ! null newConfig.fontScale 0) {sNoncompatScaledDensity application.getResources().getDisplayMetrics().scaledDensity;}}Overridepublic void onLowMemory() {}});final float targetDensity;if (isBaseOnWidth) {//以宽为基准targetDensity appDisplayMetrics.widthPixels / baseSize;} else {//以高为基准targetDensity appDisplayMetrics.heightPixels / baseSize;}final float targetScaledDensity targetDensity * (sNoncompatScaledDensity / sNoncompatDesity);final int targetDensityDpi (int) (160 * targetDensity);appDisplayMetrics.density targetDensity;appDisplayMetrics.scaledDensity targetScaledDensity;appDisplayMetrics.densityDpi targetDensityDpi;final DisplayMetrics activityDisplayMetrics activity.getResources().getDisplayMetrics();activityDisplayMetrics.density targetDensity;activityDisplayMetrics.scaledDensity targetScaledDensity;activityDisplayMetrics.densityDpi targetDensityDpi;}}整个框架大体的思路就这些其他的还没看等有空了再看看然后贴出来我们聊一聊。说实话还是看看源码然后自己动手写写有意思。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82824.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!