Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - android-coco/YhLibraryForAndroid: 🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。 · GitHub
Skip to content

Repository files navigation

YhLibraryForAndroid

Download

Android实用框架采用MVC设计模式,多个项目经验总结,持续完善中

包括:
1,OKhttp简单封装
2,Orm 数据库
3,Universal-Image-Loader
4,EventBus
5,YHRecyclerView 下拉,上拉
6,BindView 控件绑定
7,YHGlide 图片框架
8,YHWebView 自定义View
9,BindView 控件绑定
10,YHVideoPlayer 视频播放器

注,需要在AndroidManifest.xml 中声明如下权限

<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

引入

  • Gradle
compile'org.yh.yhframe:YhLibraryForAndroid:last_version'
  • Maven
<dependency>
<groupId>org.yh.yhframe</groupId>
<artifactId>YhLibraryForAndroid</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>

base包说明:

1.BaseActiciy所有Acticiy的基类2.BaseFragment所有Fragment的基类

对Utils的说明:

1.PreferenceUtils.java对SharedPreferences的封装2.CipherUtils.java对常用加密方法进行整理3.Constants.java全局常量4.CrashHandler.java异常捕捉5.DensityUtils.java系统屏幕的一些操作6.FileUtils.java文件与流处理工具类7.ImageUtils.java图片工具类8.JsonUitl.javajson数据基于Gson9.LogUtils.javaLog日志工具类10.NetWorkUtils.java网络工具类11.StringUtils.java字符串操作12.SystemUtils.java系统信息工具包13.ViewUtils.java系统界面工具类(截屏)
14.YHViewInject.java侵入式View的调用工具类15.AnnotateUtil.java注解工具类(Viewid绑定)
16.YHImageViewRoundOval.java实现圆形圆角椭圆等自定义图片View

view包说明:

1.YhToolbar标题栏
<includelayout="@layout/basetitle"/>
https://github.com/android-coco/AgentWeb2.YHWebView继承WebViewHTML5WebViewCustomADextendsBaseActiciy
{
//....
}
https://github.com/android-coco/LoadingBar3.YHLoadingBar//默认样式 loading将会覆盖在parent的内容上面YHLoadingBar.make(parent).show();
//自定义样式//提供两种形式,loadingView更简便,loadingFactory自由度更高YHLoadingBar.make(parent,loadingView).show();
YHLoadingBar.make(parent,loadingFactory).show();
//完全自定义YHLoadingBar.make(parent,loadingFactory)
.setOnClickListener(clickListener)//点击事件
.setOnLoadingBarListener(loadingBarListener)//当loadingbar取消的时候回调
.show();
//取消LoadingYHLoadingBar.cancel(parent);
4.YHLoadingDialog//默认样式YHLoadingDialog.make(context).show();
//自定义样式YHLoadingDialog.make(context, dialogFactory).show();
//完全自定义YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.show();
//设置更多属性Dialogdialog = YHLoadingDialog.make(context, dialogFactory)
.setMessage(message)//提示消息
.setCancelable(cancelable)
.create();
dialog.setOnCancelListener(cancelListener);
dialog.set...
dialog.show();
//取消LoadingYHLoadingDialog.cancel();
5.自定义FactorypublicclassCustomLoadingFactoryimplementsI_LoadingFactory {
@OverridepublicViewonCreateView(ViewGroupparent) {
ViewloadingView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent,false);
returnloadingView;
}
}
全局配置//自定义样式并应用于全局YHLoadingConfig.setFactory(loadingFactory,dialogFactory);
资源释放其实YHLoadingBar在cancel的时候已经释放掉了可以不用手动释放但是这里也提供释放的方法根据自己需要选择在ActivityonDestroy调用个人建议在BaseActivity资源释放只会释放无效的资源YHLoadingBar.release();
16.布局中加入
<org.yh.library.view.YHImageViewRoundOvalandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/img_default"/>
...
@BindView(id = R.id.img1)
privateYHImageViewRoundOvalimg1;
// public static final int TYPE_CIRCLE = 0;// 圆形// public static final int TYPE_ROUND = 1;// 圆角矩形// public static final int TYPE_OVAL = 2;//椭圆形img1.setType(YHImageViewRoundOval.TYPE_ROUND);
img1.setRoundRadius(20);//矩形凹行大小img1.setType(ZQImageViewRoundOval.TYPE_OVAL);
img1.setRoundRadius(45);// 圆角大小

数据库操作

1.YhDBManager.java2.Constants.Config.yhDBManagerConstants.Config.yhDBManager = YhDBManager.getInstance(mInstance,"yh.db",true);
Constants.Config.yhDBManager.insertAll(mAdapter.getDatas());

android 6.0权限判断

ActivityextendsBaseActiciyrequestRunTimePermission(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()//所有权限OK
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了
}
@OverridepublicvoidonGranted(List<String> grantedPermission)//部分权限OK
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)//全部拒绝
{
YHViewInject.create().showTips("拒绝授权列表:" + Constants.initPermissionNames().get(deniedPermission.get(0)));
}
});
FragmentextendsBaseFragmentrequestRunTimePermission(newString[]{Manifest.permission.CAMERA}, newI_PermissionListener()
{
@OverridepublicvoidonSuccess()
{
YHViewInject.create().showTips("授权成功");
//直接执行相应操作了outsideAty.showActivity(outsideAty, HTML5WebViewCustomAD.class);
}
@OverridepublicvoidonGranted(List<String> grantedPermission)
{
}
@OverridepublicvoidonFailure(List<String> deniedPermission)
{
YHViewInject.create().showTips("您没有授权" + Constants.initPermissionNames().get(deniedPermission.get(0)) + "权限,请在设置中打开授权");
}
});

RecyclerView和Adapter,Holder

1.YHAdapter<D> adatper2.YHHolder<D> holder3.YHRecyclerViewRecyclerView4.I_BaseAdapter<D, H> 适配器相关的接口与RecyclerView配套使用5.I_YHHolder<D> Holder相关接口6.I_YHItemClickListener<T> 事件接口LinearLayoutManagerlayoutManager = newLinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(mRecyclerView.newYHItemDecoration());//分割线mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setEmptyView(empty_layout);//没有数据的空布局mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
mRecyclerView.setFootViewText(getString(R.string.listview_loading), "没有更多");
//mRecyclerView.setArrowImageView(R.mipmap.iconfont_downgrey);mAdapter = newMyAdapter();
mAdapter.setOnItemClickListener(this);
mRecyclerView.setLoadingListener(newYHRecyclerView.LoadingListener()
{
@OverridepublicvoidonRefresh()
{
//下拉
}
@OverridepublicvoidonLoadMore()
{
//上拉
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.refresh();
}
//刷新mAdapter.setDatas(list);
//刷新完毕mRecyclerView.refreshComplete();
//没有更多mRecyclerView.setNoMore(true);
mAdapter.notifyDataSetChanged();
//加载更多mAdapter.addDatas(list);
//加载完毕mRecyclerView.loadMoreComplete();

网络操作

1.YHRequestFactory.java//url 分为2部分 头和后缀//headers 请求头 Map<String,String>YHRequestFactory.getRequestManger().get("", "",headers, new HttpCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
LogUtils.e(TAG, t);
}
@Override
public void onFailure(int errorNo, String strMsg)
{
super.onFailure(errorNo, strMsg);
LogUtils.e(TAG, strMsg);
}
}, TAG);

图片操作

1.YHGlide-->GlideYHGlide.getInstanse(MyApplication.getInstance()).loadImgeForUrl(item.getPic(), (ImageView) holder.getView(R.id.menu_pic));

License

Copyright (C) Justson(https://github.com/android-coco/YhLibraryForAndroid)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥Android实用框架,继承网络比较好的开源框架,基本上解决开发中的常见需求。

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages