
android架构
文章平均质量分 71
醉墨重生
世间万物终有循环,太极阴阳始的初衷。
展开
-
Gradle+ASM实战——关于隐私政策的那些思考
前言之前两篇文章我写了入门篇:Gradle 插件 + ASM 实战——入门篇和Gradle+ASM实战——进阶篇,对gradle+ASM不熟的大家可以去上篇文章查看github地址:https://github.com/Peakmain/AsmActualCombat需求背景12月底换了新公司,新公司的项目架构需要重构,所以也就有了上篇文章:BasicLibrary——基于kotlin+jetpack+mvvm封装一套框架,提高Android开发效率同时公司项目在整改隐私政策,其中有个需求就原创 2022-01-24 13:49:30 · 2227 阅读 · 0 评论 -
BasicUI常用UI组件和实用工具类封装,提高Android开发的效率
BasicUIBasicUI是一些常用的Android UI组件和一些实用工具类封装,提高Android的开发效率如何使用Step 1. Add the JitPack repository to your build fileAdd it in your root build.gradle at the end of repositories:allprojects { repositories { ... maven { url 'https:/.原创 2021-09-14 17:35:49 · 251 阅读 · 0 评论 -
基本UI组件的封装库(四)——basicU
以下是我的基本UI组件该系列的文章,欢迎大家转载和分享:基本UI组件的封装库(一)——basicUI基本UI组件的封装库(二)——basicUI基本UI组件的封装库——basicUI的demo的编写基本UI组件的封装库(三)——basicUI前言我在之前BasicUI项目一共包括了:1、Recycleview的封装,支持单布局和多布局,支持添加头部和底部,还包括了悬浮列表的基本封...原创 2020-03-28 17:09:14 · 450 阅读 · 0 评论 -
基本UI组件的封装库——basicUI
BasicUI目前BasicUI包括了:1、Recycleview的封装,支持单布局和多布局,支持添加头部和底部,还包括了悬浮列表的基本封装。2、dialog的封装。支持从底部弹出,并可设置动画,是否宽度全屏等样式。3、NavigationBar的封装,可以在activity中动态设置添加头部。4、PopupWindow的封装 5、editText的封装,自带清除按钮,并设置按钮的颜色和按钮的...原创 2020-03-05 21:47:56 · 838 阅读 · 0 评论 -
android6.0权限框架搭建
举例:拨打号码 1.Anroid6.0运行时权限处理findViewById(R.id.btn_callPhone).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //1.1首先判断有...原创 2018-02-20 16:24:44 · 1046 阅读 · 0 评论 -
360 DroidPlugin——插件化架构
https://github.com/Qihoo360/DroidPlugin打开网址,下载源码用AS导入lib,添加依赖继承PluginApplication,如果不继承可以如下 @Override public void onCreate() { super.onCreate(); PluginHelper.getInstance().applicatio...原创 2018-02-19 17:03:58 · 638 阅读 · 0 评论 -
自定义图片选择器
TestActivitypublic class TestImageActivity extends BaseSkinActivity{ private ArrayList<String> mImageList; private final int SELECT_IMAGE_REQUEST = 0x0011; @Override prote...原创 2018-02-17 15:41:12 · 599 阅读 · 0 评论 -
网络引擎与数据库相结合
结合之前两篇文章链式调用打造第三方的网络引擎 http://blog.youkuaiyun.com/qq_24675479/article/details/79277616 和 自己动手搭建数据库框架 http://blog.youkuaiyun.com/qq_24675479/article/details/79285849首先逻辑处理:每次都会请求数据,但是为了保证用户体验,我们可以先去本地拿缓存,如果本地...原创 2018-02-08 15:56:33 · 377 阅读 · 0 评论 -
baseActivity的封装——模板式设计模式
public abstract class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始...原创 2018-02-08 12:33:20 · 251 阅读 · 0 评论 -
耍流氓式的保活service
QQ为什么一直常驻后台? (白名单,双进程守护) 应用正在运行,这个时候内存不足回收杀进程1.提高进程的优先级,其实就是减小进程的p-&gt;oomkilladj(越小越重要),如启动Service调用startForeground()尽量提高进程的优先级;2.当应用退到后台适当释放资源然后降低APP的内存占用量,因为在oom_adj相同的时候,会优先干掉内存消耗大的进程;双进程...原创 2018-02-13 11:42:43 · 1830 阅读 · 2 评论 -
拦截Activity的启动流程绕过AndroidManifest检测
首先非常简单启动activitypublic void skip(View view){ Intent intent=new Intent(this,TestActivity.class); startActivity(intent); } 这里TestActivity没有进行注册HookStartActivityUtil工具封装类...原创 2018-02-18 14:40:07 · 1106 阅读 · 0 评论 -
加载插件资源的Demo
首先了解一下Google加载资源源码效果图 ImageView中加载src源码final Drawable d = a.getDrawable(R.styleable.ImageView_src);getDrawable源码 if (getValueAt(index*AssetManager.STYLE_NUM_ENTRIES, value)) { ...原创 2018-02-09 11:01:57 · 323 阅读 · 0 评论 -
进程间的通信-IPC(机制)Binder的原理和源码阅读
IPC进程通信的小案例MessageServicepublic class MessageService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { //绑定 return mBinder; } privat...原创 2018-06-28 09:52:19 · 312 阅读 · 0 评论 -
新闻类App (MVP + RxJava + Retrofit+ARouter)
新闻类App (MVP + RxJava + Retrofit+ARouter)整体开发基于 MVP+RxJava+Retrofit+Dagger+ARouterretrofitdagger2rxjavaRxLifecycleARouterUtilsBannerGildePhotoViewGitHub 项目地址 : https://github.com/RangersEZ/...原创 2018-11-13 17:19:41 · 475 阅读 · 0 评论 -
新闻类App (MVP + RxJava + Retrofit+Dagger+ARouter)新增功能
新闻类App (MVP + RxJava + Retrofit+Dagger+ARouter)整体开发基于 MVP+RxJava+Retrofit+Dagger+ARouterretrofitdagger2rxjavaRxLifecycleARouterUtilsBannerGildePhotoViewJiaoZiVideoPlayerandroid-gif-drawab...原创 2018-11-19 16:16:52 · 556 阅读 · 0 评论 -
自己动手搭建数据库框架
首先IDaoSupport接口,有查询,插入单条数据,批量插入,删除,更新public interface IDaoSupport<T> { void init(SQLiteDatabase sqLiteDatabase, Class<T> clazz); // 插入数据 public long insert(T t); /...原创 2018-02-08 12:31:47 · 9461 阅读 · 0 评论 -
Fragment的使用封装
封装类public class FragmentManagerHelper { // 管理类FragmentManager private FragmentManager mFragmentManager; // 容器布局id containerViewId private int mContainerViewId; /** * 构造函...原创 2018-02-15 11:05:40 · 1089 阅读 · 0 评论 -
android热修复——自己做个热修复
类的加载机制 需要注意的地方1.每次生成之后一定要测试;2.尽量的不要分包,不要分多个dex3.混淆的时候,设计到NDK AndFix.java 不要混淆4.生成包之后一般会加固什么的,这个时候生成的差分包,一定要在之前去生成。5.既然是去修复方法,第一个不能增加成员变量,不能增加方法源码public class FixDexManager { pri...原创 2018-02-08 09:28:05 · 2906 阅读 · 4 评论 -
客户端封装Fragment和Activity
一、封装activitypublic abstract class Activity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);原创 2017-09-24 22:33:01 · 320 阅读 · 0 评论 -
基础框架搭建(一)
基础框架的一种,利用的是RadioGroup和framlayout组合的一种原创 2017-11-18 14:01:09 · 393 阅读 · 0 评论 -
设置RecyclerView的位置(点击回到顶部)
1 隐藏和显示回到顶部按钮假设有个RecylerView rvHome;有个adapter rvHome.setAdapter(new HomeFragmentAdapter(mContext, result));GridLayoutManager manager = new GridLayoutManager(mContext, 1);//设置滑动到哪个位置了的监听manag原创 2017-11-24 17:18:20 · 14669 阅读 · 2 评论 -
RxJava的简单使用(一)
一测试订阅@Testpublic void testSubscribe() { //观察者/订阅者 final Subscriber subscriber = new Subscriber() { @Override public void onCompleted() {原创 2017-10-18 13:48:50 · 265 阅读 · 0 评论 -
RxBus-mvp模式下对Rxjav的封装(一)
一、首先定义一个Presenter接口:DataBusSubscriber用来接受数据public interface DataBusSubscriber { void onEvent(Object data);}二、定义一个RxBus的封装类public class RxBus { public static final String TAG =原创 2017-10-18 13:55:04 · 400 阅读 · 0 评论 -
RxBus-mvp模式下对Rxjav的封装(二)
一、自定义注解,用于标记观察者模式@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RegisterBus {}二、定义一个RxBus的类public class RxBus { public static final Str原创 2017-10-18 14:41:26 · 953 阅读 · 0 评论 -
OkHttp3的使用
一、首先需要Gradlecompile 'com.squareup.okhttp3:okhttp:3.9.0'二、测试get方法/** * 测试get方法 */@Testpublic void testGet() { //创建OKHttpClient对象 OkHttpClient okHttpClient = new OkHttpClient();原创 2017-10-30 10:26:10 · 385 阅读 · 0 评论 -
基于MVP架构的OKHttp3的封装
一、OKHttp的优势url测试地址:http://httpbin.org二、首先对Response进行封装①定义IResponse接口public interface IResponse { //状态码 int getCode(); //数据体 String getData();}②BaseResponse实现继承IRespo原创 2017-10-30 12:50:54 · 1437 阅读 · 0 评论 -
BaseAdapter的封装(ListView)
首先第一步:我们看下我们一般情况下我们的BaseAdapter的使用public class ProductAdapter extends BaseAdapter {private List productList;public ProductAdapter(List productList) { this.productList = productList;}@Ov原创 2017-12-27 11:40:26 · 283 阅读 · 0 评论 -
LBS模块架构的封装
对地图进行一个封装public interface ILbsLayer { /** * 获取地图 */ View getMapView(); /** * 设置位置变化监听 */ void setLocationChangeListener(CommonLocationChangeListener loca...原创 2017-11-02 16:46:14 · 665 阅读 · 0 评论 -
写一套IOC注解框架
首先控件属性注入//@Target(ElementType.FIELD) 代表Annotion的值 FIELD属性 TYPE类上 METHOD方法 CONSTRUCTOR构造函数@Target(ElementType.FIELD)//@Retention(RetentionPolicy.RUNTIME) 运行时生效 CLASS编译时生效 SOURCE源码资源@Retention(R...原创 2018-02-02 14:03:28 · 284 阅读 · 0 评论 -
收集崩溃信息上传服务器
直接贴完整代码,详细介绍,里面有做介绍public class ExceptionCrashHanlder implements UncaughtExceptionHandler { private static final String TAG = ExceptionCrashHanlder.class.getSimpleName(); private static Ex原创 2018-02-03 11:31:58 · 300 阅读 · 0 评论 -
Builder设计模式构建万能Dialog
首先看下AlertDialog解析图首先要会用AlertDialog的使用new AlertDialog.Builder(this) .setIcon(R.mipmap.ic_launcher) .setTitle("消息") .setPositiveButton("确定", new DialogInterface.OnClickListener() {原创 2017-12-16 16:52:33 · 964 阅读 · 1 评论 -
Builder设计模式构建NavigationBar
首先定义布局:顶部的布局,一般分为左边返回键按钮,中间是title,右边是文本RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/title_bar_style"> TextView android:id="@+id/back"原创 2018-02-06 11:25:06 · 237 阅读 · 0 评论 -
换肤框架的搭建
首先所有皮肤的view——skinView:如ImageViewpublic class SkinView { private View mSkView;//ImageView private List<SkinAttr> mSkinAttrs;//src,backgroud public SkinView(View mSkView, List<...原创 2018-02-12 14:04:41 · 330 阅读 · 0 评论 -
链式调用打造第三方的网络引擎
首先IHttpEnignepublic interface IHttpEngine { //get方法 void get(Context context, String url, MapString,Object> params, EngineCallBack callBack); //post方法 void post(Context context,St原创 2018-02-07 10:49:56 · 508 阅读 · 0 评论 -
MVP的简单使用
MVP的简单的介绍和使用原创 2017-07-27 09:30:46 · 689 阅读 · 0 评论