- 浏览: 2216343 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
运行效果:
没有安装顺序,先安装皮肤后安装主程序完全可以。
安装成功之后在程序里面找不皮肤1/2/3启动文件,因为皮肤只能在主程序中使用。在卸载里面能看到安装上的皮肤,可以卸载掉。
好了来看下主要代码:
其它请下载附件查看。





没有安装顺序,先安装皮肤后安装主程序完全可以。
安装成功之后在程序里面找不皮肤1/2/3启动文件,因为皮肤只能在主程序中使用。在卸载里面能看到安装上的皮肤,可以卸载掉。
好了来看下主要代码:
package com.iaiai; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; /** * * <p> * Title: MainActivity.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-10-18 * </p> * * @author 丸子 * @version 0.0.1 */ public class MainActivity extends Activity { private ArrayList<PackageInfo> getAllSkin() { ArrayList<PackageInfo> skinList = new ArrayList<PackageInfo>(); List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); for (PackageInfo p : packs) { if (isSkinPackage(p.packageName)) { skinList.add(p); } } return skinList; } private boolean isSkinPackage(String packageName) { String rex = "com.iaiai\\w"; Pattern pattern = Pattern.compile(rex); Matcher matcher = pattern.matcher(packageName); return matcher.find(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final LinearLayout layout = (LinearLayout) findViewById(R.id.layout); ((Button) findViewById(R.id.def)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { layout.setBackgroundDrawable(getResources() .getDrawable(R.drawable.bg)); } }); ArrayList<PackageInfo> skinList = getAllSkin(); for (int i = 0; i < skinList.size(); i++) { try { final Context friendContext = createPackageContext( skinList.get(i).packageName, Context.CONTEXT_IGNORE_SECURITY); Button btn = new Button(this); btn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); btn.setText(friendContext.getText(R.string.app_name)); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { layout.setBackgroundDrawable(friendContext .getResources().getDrawable(R.drawable.bg)); } }); layout.addView(btn); } catch (NameNotFoundException e) { e.printStackTrace(); } } } }
其它请下载附件查看。
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 656本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1133颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 1024从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1201Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1045Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 864前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 956监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 816在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 1008最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1369##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1158当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 817setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1548问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 800底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1806点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1403import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2362TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1601一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 907Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 954最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
本文将深入探讨如何通过APK方式实现Android应用程序的换肤功能,主要涉及的主题包括皮肤资源的管理、动态加载以及换肤过程中的注意事项。 首先,我们需要理解Android应用的皮肤是如何工作的。皮肤通常是一组定制的...
总结起来,"APK方式换肤"是通过构建独立的皮肤APK,动态加载和替换应用资源来实现的。在实际开发中,需关注资源管理、动态加载机制、兼容性问题、安全性和用户体验等多个方面,以实现高效且安全的换肤功能。文件名称...
在Android应用开发中,实现apk皮肤文件换肤是一项常见的需求,它可以提高用户的个性化体验,同时降低主程序的维护复杂度。以下是对实现这一功能的详细分析: 首先,我们需要理解Android系统的安全机制。每个APK在...
apk方式实现android应用程序换肤。 文章:http://blog.csdn.net/hailushijie/article/details/9454679
首先,我们来看一下标题中的"android换肤功能简单",这表明我们将讨论的是一个相对简单的Android换肤实现方案。 在描述中提到的博客链接(http://blog.csdn.net/jan_s/article/details/48393003)可能提供了更详细...
以下将详细讲解如何在Android APK中实现换肤功能。 首先,换肤的核心在于资源管理。Android应用的外观主要由XML资源文件定义,包括颜色、样式、布局等。换肤时,通常会创建多套这样的资源文件,每套对应一种皮肤。...
本文将深入探讨“Android插件换肤完整版”这一主题,包括其核心概念、实现机制以及相关技术。 首先,Android换肤主要涉及两部分:皮肤资源和动态加载。皮肤资源通常包含颜色、图片、布局等界面元素,它们存储在单独...
"android换肤实现"这个主题涉及到了如何让应用程序可以根据用户的选择切换不同的界面风格,类似于流行的Go桌面应用。这种技术允许用户根据个人喜好调整应用的外观,增强其交互性和视觉吸引力。 在Android中实现换肤...
确保用户在安装皮肤Apk时授予了必要的权限,如读取存储权限,以访问Apk文件。 3. **动态加载插件**:当用户选择一个新的皮肤时,需要动态加载对应的Apk。这可以通过`PackageManager`服务完成,获取Apk的`...
在Android平台上实现“摇一摇换皮肤”的功能,涉及到多个技术点,包括传感器事件处理、UI动态更新以及资源管理等。下面将详细讲解这些关键知识点。 1. **传感器事件处理**: Android设备通常配备有多种传感器,如...
4. **插件化技术**:为了实现动态换肤,可能需要用到Android的插件化技术,如DexClassLoader或 DexOpener,它们可以加载非主APK中的类和资源,使得皮肤APK能够独立于主应用运行。 5. **线程安全与性能优化**:考虑...
本文将深入探讨如何实现这个功能,主要基于标题"Android动态换肤"和描述中的关键点:通过宿主工程加载插件apk中的图片,使用反射和类加载器。 首先,我们要理解动态换肤的基本原理。传统的换肤方式通常需要用户下载...
【Android插件换肤Demo】是一个演示如何在Android应用程序中实现动态皮肤更换功能的示例。这个Demo展示了如何通过插件化技术来实现在运行时切换应用的视觉样式,为用户提供个性化的体验。尽管这个Demo可能并不直接...
Android皮肤支持:一种Android换肤框架,极低的学习成本,极好的用户体验。 只需要一行代码,就可以实现换肤,你值得拥有!!! SkinCompatManager . withoutActivity( this ) . loadSkin(); 就这么简单,你的APK已经...
在Android应用开发中,"动态加载本地皮肤包进行换肤"是一种提高用户体验和个性化定制的常见技术。通过插件化开发,我们可以实现不更新主应用就能更换应用界面皮肤的效果,从而满足用户对不同主题和风格的需求。以下...
"插件apk换肤代码"这个主题主要涉及到动态加载外部皮肤包的技术,它允许用户自由更换应用的主题色或者界面风格,而无需重新安装整个应用。下面将详细介绍这个过程涉及的关键知识点。 1. **AndroidManifest.xml配置*...
本资源“Android应用源码之换肤.zip”提供了实现这一功能的源代码示例,旨在帮助开发者深入理解如何在Android应用中实现实时换肤。 首先,我们来探讨换肤的基本原理。在Android应用中,换肤通常涉及到改变UI组件的...
这里来了解换肤实现及不同方案的差异和使用场合。 一、从功能上划分 1) 软件内置多个皮肤,用户不能修改; 2) 官方提供皮肤下载,用户使用下载的皮肤; 3) 官方提供皮肤制作工具或方法,用户自制皮肤。 二、皮肤定义...
在Android开发中,实现apk插件方式的换肤是一种提高用户体验和灵活性的策略。下面将详细解释这个过程涉及的关键知识点。 1. **何时换肤**: 在Android应用中,为了确保用户不会看到旧皮肤的颜色,换肤应在XML布局...
换肤功能通常会将皮肤资源打包为单独的APK或使用插件化技术,以便用户可以下载和安装不同的皮肤包。 此外,考虑到用户体验,换肤功能还应提供预览功能,让用户在应用皮肤前能看到效果。同时,为了兼容不同设备和...