部落冲突联机模式夜间模式能实现吗

Android 利用an框架快速实现夜间模式的两种套路a year ago1)第一种实现方法,稍微有点复杂。首先我们需要一个夜间模式的帮助类,还有要找到需要设置夜间模式的Layout//主题切换测试
private DayNightHelper mDayNightH
private RecyclerView mRecyclerV
private LinearLayout mHeaderL
private List&RelativeLayout& mLayoutL
private List&TextView& mTextViewL
private List&CheckBox& mCheckBoxL
在setContentView()之前,加入初始化的夜间模式主题,如mDayNightHelper = new DayNightHelper(this);
initTheme();
setContentView(R.layout.activity_main);
initTheme()如下,作用是关闭应用第二次进入如果是夜间模式则显示夜间模式,反之亦然,private void initTheme() {
if (mDayNightHelper.isDay()) {
setTheme(R.style.DayTheme);
setTheme(R.style.NightTheme);
简单的findViewByIdmLayoutList = new ArrayList&&();
mLayoutList.add((RelativeLayout) findViewById(R.id.jianshu_layout));
mLayoutList.add((RelativeLayout) findViewById(R.id.zhihu_layout));
mTextViewList = new ArrayList&&();
mTextViewList.add((TextView) findViewById(R.id.tv_jianshu));
mTextViewList.add((TextView) findViewById(R.id.tv_zhihu));
mCheckBoxList = new ArrayList&&();
CheckBox ckbJianshu = (CheckBox) findViewById(R.id.ckb_jianshu);
ckbJianshu.setOnCheckedChangeListener(this);
其次是对某一事件的监听 ,修改主题,这里是CheckBox@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int viewId = buttonView.getId();
if (viewId == R.id.ckb_jianshu) {
changeThemeByJianShu();
} else if (viewId == R.id.ckb_zhihu) {
changeThemeByZhiHu();
这里讨论知乎的实现讨论,可以看到这里启动了一个夜间模式切换的动画,这样不至于一下子就变了背景。动画是实现的渐变效果,给用户好的体验效果。toggleThemeSetting是对CheckBox的事件监听来j。/**
* 使用知乎的实现套路来切换夜间主题
private void changeThemeByZhiHu() {
showAnimation();
toggleThemeSetting();
refreshUI();
showAnimation和toggleThemSetting的代码如下,/**
* 展示一个切换动画
private void showAnimation() {
final View decorView = getWindow().getDecorView();
Bitmap cacheBitmap = getCacheBitmapFromView(decorView);
if (decorView instanceof ViewGroup && cacheBitmap != null) {
final View view = new View(this);
view.setBackgroundDrawable(new BitmapDrawable(getResources(), cacheBitmap));
ViewGroup.LayoutParams layoutParam = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
((ViewGroup) decorView).addView(view, layoutParam);
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f);
objectAnimator.setDuration(300);
objectAnimator.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
((ViewGroup) decorView).removeView(view);
objectAnimator.start();
* 切换主题设置
private void toggleThemeSetting() {
if (mDayNightHelper.isDay()) {
mDayNightHelper.setMode(DayNightMode.NIGHT);
setTheme(R.style.NightTheme);
mDayNightHelper.setMode(DayNightMode.DAY);
setTheme(R.style.DayTheme);
再者,开始更新UI,refresh当前的UI,initThem是进入是的模式是夜间还是白天。TypedValue background = new TypedValue();//背景色
TypedValue textColor = new TypedValue();//字体颜色
Resources.Theme theme = getTheme();
theme.resolveAttribute(R.attr.anBackground, background, true);
theme.resolveAttribute(R.attr.anTextColor, textColor, true);
mHeaderLayout.setBackgroundResource(background.resourceId);
for (RelativeLayout layout : mLayoutList) {
layout.setBackgroundResource(background.resourceId);
for (CheckBox checkBox : mCheckBoxList) {
checkBox.setBackgroundResource(background.resourceId);
for (TextView textView : mTextViewList) {
textView.setBackgroundResource(background.resourceId);
Resources resources = getResources();
for (TextView textView : mTextViewList) {
textView.setTextColor(resources.getColor(textColor.resourceId));
最后,你不觉得很奇怪吗?就凭借上面的代码就可以实现夜间模式切换效果,未免太简单了吧,其实不用奇怪,就是这么简单,我们只要在加入an框架的background即可,这样,每次设置好相应的夜间模式或正常模式,an框架都会帮助去进行主题的设置。在Layout布局代码中按照如下这样的标准加入相应的,属性。&LinearLayout
android:id="@+id/header_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/anBackground"
android:orientation="vertical"&
&RelativeLayout
android:id="@+id/jianshu_layout"
android:layout_width="match_parent"
android:layout_height="35dp"
android:background="?attr/anBackground"&
android:id="@+id/tv_jianshu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:background="?attr/anBackground"
android:text="简书夜间模式切换方案"
android:textColor="?attr/anTextColor" /&
android:id="@+id/ckb_jianshu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
android:background="?attr/anBackground" /&
&/RelativeLayout&
第一种方式的所有实现夜间模式套路,这里已经完全,完完全全给出来了,你不需要额外的配置,这样就可以完成夜间模式,但是相对于第二种方式就显得比较复杂了。an框架也提供的另一种简单的夜间模式,如2)中。2)第二种夜间模式实现方式,简单夜间模式实现方式,如效果图第二个点击进入的窗口(即改变背景)同样在CheckBox中,监听即可完成夜间模式的设置,下次启动则可以生效,从效果图可以看到,改变了主题颜色(改变主题也可以认为就是夜间模式,只不过换个颜色)上面也说了,不能写一个皮肤出来,大材小用。,业务也不需要。@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
SharedPreferences.Editor editor = sp.edit();
if (sp.getBoolean("isNightMode", false)) {
editor.putBoolean("isNightMode", false);
getWindow().getDecorView().setBackground(this.getResources().getDrawable(com.an.an_base.R.drawable.yy_drawable_bgnigt_shape));
editor.putBoolean("isNightMode", true);
getWindow().getDecorView().setBackground(getResources().getDrawable(com.an.an_base.R.drawable.yy_drawable_bgday_shape));
从效果图也可以看到,之前设置的夜间模式,显示出来了,是因为我为了验证第一种(设置夜间模式的方法是否有效)而加入的代码,可以看到第一种夜间模式完全OK,加入了下面代码mDayNightHelper = new DayNightHelper(this);
initTheme();
setContentView(R.layout.activity_create_code);
private void initTheme() {
if (mDayNightHelper.isDay()) {
setTheme(R.style.DayTheme);
setTheme(R.style.NightTheme);
4。重要知识点(总结,思考)。引用了an框架,具体也可以参考,网易博客。5。内容参考(尊重原创)。第一种实现套路是参考知乎上另一位童鞋的夜间模式的实现套路修改而来的,这里已经完全简化了使用方式,通过本博客既可以快速集成。参考,链接(我又上网找到了,但不是知乎的,是传送门也有参考)第二种为个人设计6。联系作者。## 联系作者。Athor:sunshuntao(qydq)(莳萝花)。Email:。知乎地址:End???
请关注后获取源码
至:授人以鱼,不如授人与渔,话不多说,yu前几篇博客已经介绍过,更多内容请关注。0收藏分享举报文章被以下专栏收录此专栏介绍android开发相关的只是推荐阅读{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&此专栏为android进阶应用场景,主要侧重MD设计,设计。&,&permission&:&COLUMN_PUBLIC&,&memberId&:,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&此专栏介绍android开发相关的只是&,&urlToken&:&qyddai&,&id&:19471,&imagePath&:&v2-28a7c692cda8c760ec9aac.jpg&,&slug&:&qyddai&,&applyReason&:&0&,&name&:&Android开发&,&title&:&Android开发&,&url&:&https:\u002F\\u002Fqyddai&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:96,&avatar&:{&id&:&v2-28a7c692cda8c760ec9aac&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\\u002Fv2-28a7c692cda8c760ec9aac_l.jpg&,&articlesCount&:20},&state&:&accepted&,&targetPost&:{&titleImage&:&https:\u002F\\u002Fv2-bde533ad_r.jpeg&,&lastUpdated&:,&imagePath&:&v2-bde533ad.jpeg&,&permission&:&ARTICLE_PUBLIC&,&topics&:[94],&summary&:&网上看到过大多实现夜间模式的效果,实现方式总结起来,发现好繁琐,大多数夜间模式实现都是基于另一套apk来,作为依赖实现,像QQ,微信,这种直接提供给你一套皮肤来切换背景,如果要做这个皮肤开发的工作量不小于一个软件的开发周期,而知乎简书这种夜间…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T10:48:45+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:1193314,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&Android 利用an框架快速实现夜间模式的两种套路&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:19471,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&https:\u002F\\u002Fv2-bde533ad_r.jpeg&,&author&:{&bio&:&即时通讯,软件设计与开发者,物联网,移动互联网,AIVRVI兴趣者&,&isFollowing&:false,&hash&:&071d1fea34ab3dcd844fdb&,&uid&:057300,&isOrg&:false,&slug&:&qydq&,&isFollowed&:false,&description&:&专注于物联网领域,世界的通信标准从今开始改变,手机也可以是路由器,成功于视频直播,标准并不一定是Http\u002Fs,也可以是Bluetooth。&,&name&:&Bgwan&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fqydq&,&avatar&:{&id&:&464372bfcc3ecad&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:434911}],&title&:&Android 利用an框架快速实现夜间模式的两种套路&,&author&:&qydq&,&content&:&网上看到过大多实现夜间模式的效果,实现方式总结起来,发现好繁琐,大多数夜间模式实现都是基于另一套apk来,作为依赖实现,像QQ,微信,这种直接提供给你一套皮肤来切换背景,如果要做这个皮肤开发的工作量不小于一个软件的开发周期,而知乎简书这种夜间模式的实现就相对于更加轻量级了。\u003Cp\u003E今天这里采用qydq\u002F提供的an框架来简单快速实现夜间模式,an框架提供了两种方式实现夜间模式,一种比较简单,一种比较复杂。\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Cp\u003EAthor IP:sunshuntao(qydq)(莳萝花)。\u003C\u002Fp\u003E\u003Cp\u003EEmail:。\u003C\u002Fp\u003E\u003Cp\u003E知乎地址:\u003Ca href=\&https:\u002F\\u002Fqyddai\& class=\&internal\&\u003EAndroid开发 - 知乎专栏\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003Cb\u003EBegin\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E???
请关注后获取源码
\u003C\u002Fb\u003E???
\u003C\u002Fp\u003E\u003Cp\u003E创建时间:日;最近修改时间:日。\u003C\u002Fp\u003E\u003Ch3\u003E\u003Ca class=\& wrap external\& href=\&http:\u002F\\u002F?target=https%3A\\u002Fqydq\u002Fan-maven-base%23tips\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EGitHub - qydq\u002Fan-maven-base: android studio创建github 的repository\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fh3\u003E\u003Ch3\u003ETips\u003C\u002Fh3\u003E\u003Cp\u003E1。前言(包含该项目主要实现的功能的简短说明,运行配置;可选)。\u003C\u002Fp\u003E\u003Cp\u003E2。实现效果(如果没有可以省略,但是建议要包含,因为项目以后自己看到的时候会帮助自己理解)。\u003C\u002Fp\u003E\u003Cp\u003E3。思路或使用(代码)。\u003C\u002Fp\u003E\u003Cp\u003E## ***
\u003C\u002Fp\u003E\u003Cp\u003E4。重要知识点(总结,思考)。\u003C\u002Fp\u003E\u003Cp\u003E5。内容参考(尊重原创)。\u003C\u002Fp\u003E\u003Cp\u003E6。联系作者。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E*** -----------------------------woshifengexian-----------------------------------***\u003C\u002Fp\u003E\u003Cp\u003E2,实现效果\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-3afca29ed0ff_b.jpg\& data-rawwidth=\&720\& data-rawheight=\&1280\& class=\&origin_image zh-lightbox-thumb\& width=\&720\& data-original=\&https:\u002F\\u002Fv2-3afca29ed0ff_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='720'%20height='1280'&&\u002Fsvg&\& data-rawwidth=\&720\& data-rawheight=\&1280\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&720\& data-original=\&https:\u002F\\u002Fv2-3afca29ed0ff_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-3afca29ed0ff_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003C\u002Fp\u003E\u003Cp\u003E3。思路或使用(代码)。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E稍微说一下,首先外面切换的时候,只是设置了部分区域的夜间模式,这里主要以示区别,你自己也可以试着把那个模块区域加上夜间模式,下面的内容会讲解到。\u003C\u002Fp\u003E\u003Cp\u003E点击进去也设置了夜间模式,可以看到也是\u003Cb\u003E部分区域设置了\u003C\u002Fb\u003E夜间模式(这里是随便选了一种颜色就当作皮肤,你可以改成夜间模式灰色即可),因为点击后的界面我们要用第二种方式来实现夜间模式,这里以示区别。具体根据业务需求来采用相应的方法。\u003C\u002Fp\u003E\u003Cp\u003E下面开始讲解两种夜间模式的实现方法。首先在编译build.gradle中加入an框架如下依赖,\u003C\u002Fp\u003E\u003Cp\u003E自己备注一下:base应该是轻量级别的依赖关系,an应该是重量级的依赖,这里算是一个瑕疵。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ecompile 'com.github.qydq:an-maven-base:0.0.8'\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E1)第一种实现方法,稍微有点复杂。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E首先\u003C\u002Fb\u003E我们需要一个夜间模式的帮助类,还有要找到需要设置夜间模式的Layout\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F\u002F主题切换测试\nprivate DayNightHelper mDayNightH\nprivate RecyclerView mRecyclerV\nprivate LinearLayout mHeaderL\nprivate List&RelativeLayout& mLayoutL\nprivate List&TextView& mTextViewL\nprivate List&CheckBox& mCheckBoxL\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E在setContentView()之前,加入初始化的夜间模式主题,如\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EmDayNightHelper = new DayNightHelper(this);\ninitTheme();\nsetContentView(R.layout.activity_main);\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003EinitTheme()如下,作用是关闭应用第二次进入如果是夜间模式则显示夜间模式,反之亦然,\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void initTheme() {\nif (mDayNightHelper.isDay()) {\n
setTheme(R.style.DayTheme);\n
} else {\n
setTheme(R.style.NightTheme);\n
}\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E简单的findViewById\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EmLayoutList = new ArrayList&&();\nmLayoutList.add((RelativeLayout) findViewById(R.id.jianshu_layout));\nmLayoutList.add((RelativeLayout) findViewById(R.id.zhihu_layout));\nmTextViewList = new ArrayList&&();\nmTextViewList.add((TextView) findViewById(R.id.tv_jianshu));\nmTextViewList.add((TextView) findViewById(R.id.tv_zhihu));\nmCheckBoxList = new ArrayList&&();\nCheckBox ckbJianshu = (CheckBox) findViewById(R.id.ckb_jianshu);\nckbJianshu.setOnCheckedChangeListener(this);\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cb\u003E其次\u003C\u002Fb\u003E是对某一事件的监听 ,修改主题,这里是CheckBox\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E@Override\npublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {\nint viewId = buttonView.getId();\n
if (viewId == R.id.ckb_jianshu) {\n
changeThemeByJianShu();\n\n
} else if (viewId == R.id.ckb_zhihu) {\n
changeThemeByZhiHu();\n
}\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E这里讨论知乎的实现讨论,可以看到这里启动了一个夜间模式切换的动画,这样不至于一下子就变了背景。动画是实现的渐变效果,给用户好的体验效果。toggleThemeSetting是对CheckBox的事件监听来j。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F**\n * 使用知乎的实现套路来切换夜间主题\n *\u002F\nprivate void changeThemeByZhiHu() {\n
showAnimation();\n
toggleThemeSetting();\n
refreshUI();\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003EshowAnimation和toggleThemSetting的代码如下,\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F**\n * 展示一个切换动画\n *\u002F\nprivate void showAnimation() {\nfinal View decorView = getWindow().getDecorView();\n
Bitmap cacheBitmap = getCacheBitmapFromView(decorView);\n
if (decorView instanceof ViewGroup && cacheBitmap != null) {\nfinal View view = new View(this);\n
view.setBackgroundDrawable(new BitmapDrawable(getResources(), cacheBitmap));\n
ViewGroup.LayoutParams layoutParam = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,\n
ViewGroup.LayoutParams.MATCH_PARENT);\n
((ViewGroup) decorView).addView(view, layoutParam);\n
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, \&alpha\&, 1f, 0f);\n
objectAnimator.setDuration(300);\n
objectAnimator.addListener(new AnimatorListenerAdapter() {\n@Override\n
public void onAnimationEnd(Animator animation) {\nsuper.onAnimationEnd(animation);\n
((ViewGroup) decorView).removeView(view);\n
objectAnimator.start();\n
}\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F**\n * 切换主题设置\n *\u002F\nprivate void toggleThemeSetting() {\nif (mDayNightHelper.isDay()) {\nmDayNightHelper.setMode(DayNightMode.NIGHT);\n
setTheme(R.style.NightTheme);\n
} else {\nmDayNightHelper.setMode(DayNightMode.DAY);\n
setTheme(R.style.DayTheme);\n
}\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cb\u003E再者\u003C\u002Fb\u003E,开始更新UI,refresh当前的UI,initThem是进入是的模式是夜间还是白天。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003ETypedValue background = new TypedValue();\u002F\u002F背景色\nTypedValue textColor = new TypedValue();\u002F\u002F字体颜色\nResources.Theme theme = getTheme();\ntheme.resolveAttribute(R.attr.anBackground, background, true);\ntheme.resolveAttribute(R.attr.anTextColor, textColor, true);\n\nmHeaderLayout.setBackgroundResource(background.resourceId);\nfor (RelativeLayout layout : mLayoutList) {\n
layout.setBackgroundResource(background.resourceId);\n}\nfor (CheckBox checkBox : mCheckBoxList) {\n
checkBox.setBackgroundResource(background.resourceId);\n}\nfor (TextView textView : mTextViewList) {\n
textView.setBackgroundResource(background.resourceId);\n}\n\nResources resources = getResources();\nfor (TextView textView : mTextViewList) {\n
textView.setTextColor(resources.getColor(textColor.resourceId));\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cb\u003E最后\u003C\u002Fb\u003E,你不觉得很奇怪吗?就凭借上面的代码就可以实现夜间模式切换效果,未免太简单了吧,其实不用奇怪,就是这么简单,我们只要在加入an框架的background即可,这样,每次设置好相应的夜间模式或正常模式,an框架都会帮助去进行主题的设置。\u003C\u002Fp\u003E\u003Cp\u003E在Layout布局代码中按照如下这样的标准加入相应的,属性。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&LinearLayout\n
android:id=\&@+id\u002Fheader_layout\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&wrap_content\&\n\n
android:background=\&?attr\u002FanBackground\&\n
android:orientation=\&vertical\&&\n\n
&RelativeLayout\n
android:id=\&@+id\u002Fjianshu_layout\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&35dp\&\n
android:background=\&?attr\u002FanBackground\&&\n\n
&TextView\n
android:id=\&@+id\u002Ftv_jianshu\&\n
android:layout_width=\&wrap_content\&\n
android:layout_height=\&wrap_content\&\n
android:layout_centerVertical=\&true\&\n
android:layout_marginLeft=\&10dp\&\n
android:background=\&?attr\u002FanBackground\&\n
android:text=\&简书夜间模式切换方案\&\n
android:textColor=\&?attr\u002FanTextColor\& \u002F&\n\n
&CheckBox\n
android:id=\&@+id\u002Fckb_jianshu\&\n
android:layout_width=\&wrap_content\&\n
android:layout_height=\&wrap_content\&\n
android:layout_alignParentRight=\&true\&\n
android:layout_centerVertical=\&true\&\n
android:layout_marginRight=\&20dp\&\n
android:background=\&?attr\u002FanBackground\& \u002F&\n
&\u002FRelativeLayout&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E第一种方式的所有实现夜间模式套路,这里已经完全,完完全全给出来了,你不需要额外的配置,这样就可以完成夜间模式,但是相对于第二种方式就显得比较复杂了。an框架也提供的另一种简单的夜间模式,如2)中。\u003C\u002Fp\u003E\u003Cp\u003E2)第二种夜间模式实现方式,简单夜间模式实现方式,如效果图第二个点击进入的窗口(即改变背景)\u003C\u002Fp\u003E\u003Cp\u003E同样在CheckBox中,监听即可完成夜间模式的设置,下次启动则可以生效,从效果图可以看到,改变了主题颜色(改变主题也可以认为就是夜间模式,只不过换个颜色)上面也说了,不能写一个皮肤出来,大材小用。,业务也不需要。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E@Override\npublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {\n
SharedPreferences.Editor editor = sp.edit();\n
if (sp.getBoolean(\&isNightMode\&, false)) {\n
editor.putBoolean(\&isNightMode\&, false);\n
getWindow().getDecorView().setBackground(this.getResources().getDrawable(com.an.an_base.R.drawable.yy_drawable_bgnigt_shape));\n
} else {\n
editor.putBoolean(\&isNightMode\&, true);\n
getWindow().getDecorView().setBackground(getResources().getDrawable(com.an.an_base.R.drawable.yy_drawable_bgday_shape));\n
}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E从效果图也可以看到,之前设置的夜间模式,显示出来了,是因为我为了验证第一种(设置夜间模式的方法是否有效)而加入的代码,可以看到第一种夜间模式完全OK,加入了下面代码\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EmDayNightHelper = new DayNightHelper(this);\ninitTheme();\nsetContentView(R.layout.activity_create_code);\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void initTheme() {\nif (mDayNightHelper.isDay()) {\n
setTheme(R.style.DayTheme);\n
} else {\n
setTheme(R.style.NightTheme);\n
}\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E4。重要知识点(总结,思考)。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E引用了an框架,具体也可以参考,网易博客。\u003C\u002Fp\u003E\u003Cp\u003E5。内容参考(尊重原创)。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E第一种实现套路是参考知乎上另一位童鞋的夜间模式的实现套路修改而来的,这里已经完全简化了使用方式,通过本博客既可以快速集成。\u003C\u002Fp\u003E\u003Cp\u003E参考,链接(我又上网找到了,但不是知乎的,是传送门也有参考)\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\u002Fchuansong.me\u002Fn\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E知乎和简书的夜间模式实现套路_Android程序员\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E第二种为个人设计\u003C\u002Fp\u003E\u003Cp\u003E6。联系作者。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E## 联系作者。\u003C\u002Fp\u003E\u003Cp\u003EAthor:sunshuntao(qydq)(莳萝花)。\u003C\u002Fp\u003E\u003Cp\u003EEmail:。\u003C\u002Fp\u003E\u003Cp\u003E知乎地址:\u003Ca href=\&https:\u002F\\u002Fqyddai\& class=\&internal\&\u003EAndroid开发 - 知乎专栏\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003EEnd\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E???
请关注后获取源码
\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E至:授人以鱼,不如授人与渔,话不多说,yu前几篇博客已经介绍过,更多内容请关注。\u003C\u002Fp\u003E&,&updated&:new Date(&T02:48:45.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&collapsedCount&:0,&likeCount&:0,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\\u002Fv2-bde533ad_r.jpeg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android 开发&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&设计&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&夜间模式&}],&adminClosedComment&:false,&titleImageSize&:{&width&:512,&height&:334},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&column&:{&slug&:&qyddai&,&name&:&Android开发&},&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:0,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T10:48:45+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[],&summary&:&网上看到过大多实现夜间模式的效果,实现方式总结起来,发现好繁琐,大多数夜间模式实现都是基于另一套apk来,作为依赖实现,像QQ,微信,这种直接提供给你一套皮肤来切换背景,如果要做这个皮肤开发的工作量不小于一个软件的开发周期,而知乎简书这种夜间…&,&reviewingCommentsCount&:0,&meta&:{&previous&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\\u002F50\u002Fbde533ad_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Maven&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Eclipse&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&设计&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&即时通讯,软件设计与开发者,物联网,移动互联网,AIVRVI兴趣者&,&isFollowing&:false,&hash&:&071d1fea34ab3dcd844fdb&,&uid&:057300,&isOrg&:false,&slug&:&qydq&,&isFollowed&:false,&description&:&专注于物联网领域,世界的通信标准从今开始改变,手机也可以是路由器,成功于视频直播,标准并不一定是Http\u002Fs,也可以是Bluetooth。&,&name&:&Bgwan&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fqydq&,&avatar&:{&id&:&464372bfcc3ecad&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&qyddai&,&name&:&Android开发&},&content&:&maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。\u003Cbr\u003Emaven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性\u003Cbr\u003E利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。\u003Cp\u003E\u003Cb\u003EBegin\u003C\u002Fb\u003E\u003C\u002Fp\u003E而大家都知道android项目是如何发布到Jcenter代码库中。Jcenter是一个maven的标准代码库,向我们平时通过compile \u003Cbr\u003E引用的library库其实基本都是从Jcenter库中下载。当然这次我们来配置eclipse的maven管理。用maven的仓库在开发中能够事半功倍。\u003Cp\u003E第一步:首先在apache的官方下载maven的zip \u003C\u002Fp\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\u002F\u002Fprojects.apache.org\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Eeclipse-maven-plugin.zip ( for eclipse helios or higher ) \u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cp\u003E解压缩出来,随便放置到一个盘中。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cimg src=\&https:\u002F\\u002F4a06aeecef148c9103e38_b.png\& data-rawwidth=\&560\& data-rawheight=\&196\& class=\&origin_image zh-lightbox-thumb\& width=\&560\& data-original=\&https:\u002F\\u002F4a06aeecef148c9103e38_r.png\&\u003E目录路径最好不要含有中文或空格。以下用 %maven-plugin% 表示插件解压缩的根目录。如这里的 E:\u002Fsetup\u002Fdev\u002Feclipse\u002Fplugins\u002Fmaven。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cbr\u003E第二步:配置环境变量。\u003Cbr\u003E\u003Cbr\u003Ea. MAVEN_HOME:D:\\Software_IDE\\apache-maven-3.0.4\u003Cbr\u003E\u003Cbr\u003Eb.PATH:%MAVEN_HOME%\\\u003Cp\u003E配置好了验证一下,因为之前有配置过,如下图。\u003C\u002Fp\u003E\u003Cp\u003Ecmd 输入maven -version\u003C\u002Fp\u003E\u003Cp\u003E\u003Cimg src=\&https:\u002F\\u002Fb3cf7f21c8_b.png\& data-rawwidth=\&701\& data-rawheight=\&189\& class=\&origin_image zh-lightbox-thumb\& width=\&701\& data-original=\&https:\u002F\\u002Fb3cf7f21c8_r.png\&\u003E第三步:修改maven仓库的路径。\u003C\u002Fp\u003E\u003Cp\u003E在D盘,新建文件夹,如图,\u003C\u002Fp\u003E\u003Cp\u003E\u003Cimg src=\&https:\u002F\\u002Ff97cadb00f432e00a1cf1c_b.png\& data-rawwidth=\&318\& data-rawheight=\&116\& class=\&content_image\& width=\&318\&\u003Esettings.xml中输入如下内容即可。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&span style=\&font-family:KaiTi_GB2312;font-size:18\&&&?xml version=\&1.0\& encoding=\&UTF-8\&?&\nhttp:\u002F\u002Fmaven.apache.org\u002FSETTINGS\u002F1.0.0\& \n
xmlns:xsi=\&http:\u002F\u002Fwww.w3.org\u002FFXMLSchema-instance\& \n
xsi:schemaLocation=\&http:\u002F\u002Fmaven.apache.org\u002FSETTINGS\u002F1.0.0 http:\u002F\u002Fmaven.apache.org\u002Fxsd\u002Fsettings-1.0.0.xsd\&&\n\t\n\t&pluginGroups \u002F&\n\t&proxies \u002F&\n\t&servers \u002F&\n\t&mirrors \u002F&\n\t&localRepository&D:\u002Fm2\u002Frepository&\u002FlocalRepository&\n&\u002Fsettings&&\u002Fspan&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E然后再D:\\ide\\apache-maven-3.3.9\\conf盘中找到Settings.xml修改默认的配置路径为你刚刚新建文件夹的路径,\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E
&--| The path to the local repository maven will use to store artifacts.\n
| Default: ${user.home}\u002F.m2\u002Frepository---&\n\n
&localRepository&D:\\Users\\repository&\u002FlocalRepository&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E第四步:\u003C\u002Fp\u003E\u003Cp\u003E配置eclipse中maven,打开eclipse ,windows --&preference--&maven\u003C\u002Fp\u003E\u003Cp\u003E找到instanlation ,点击add ,添加你刚刚的maven的压缩文件地址。\u003C\u002Fp\u003E\u003Cimg src=\&https:\u002F\\u002Fdde5b15c9cd40b5cc378491_b.png\& data-rawwidth=\&619\& data-rawheight=\&290\& class=\&origin_image zh-lightbox-thumb\& width=\&619\& data-original=\&https:\u002F\\u002Fdde5b15c9cd40b5cc378491_r.png\&\u003E\u003Cbr\u003E\u003Cp\u003E在User Settings中,选择你刚刚自己修改的maven仓库的地址即可\u003C\u002Fp\u003E\u003Cp\u003E即选择D:\\Users\\repository路径下的settings.xml文件。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cbr\u003E\u003Cp\u003E第五步:最后,大功告成,你可以新建一个项目,new project \u002F选择other ,选择new maven project ,\u003C\u002Fp\u003E\u003Cp\u003Enext next , \u003C\u002Fp\u003E\u003Cp\u003E验证结果。\u003C\u002Fp\u003E\u003Cimg src=\&https:\u002F\\u002F2ad4b05ce037_b.png\& data-rawwidth=\&844\& data-rawheight=\&218\& class=\&origin_image zh-lightbox-thumb\& width=\&844\& data-original=\&https:\u002F\\u002F2ad4b05ce037_r.png\&\u003E\u003Cbr\u003E\u003Cp\u003E\u003Cb\u003EEnd \u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E\u003Cb\u003E作者:sunshuntao ,2016.09月记。\u003C\u002Fb\u003E\u003C\u002Fp\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T09:43:23+08:00&,&url&:&\u002Fp\u002F&,&title&:&eclipse快速配置Maven plugin 安装&,&summary&:&maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。 maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性 利用maven自身及其插…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:0,&likesCount&:0},&next&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\\u002F50\u002Fv2-bde533ad_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&设计&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android Studio&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&计算机网络&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&即时通讯,软件设计与开发者,物联网,移动互联网,AIVRVI兴趣者&,&isFollowing&:false,&hash&:&071d1fea34ab3dcd844fdb&,&uid&:057300,&isOrg&:false,&slug&:&qydq&,&isFollowed&:false,&description&:&专注于物联网领域,世界的通信标准从今开始改变,手机也可以是路由器,成功于视频直播,标准并不一定是Http\u002Fs,也可以是Bluetooth。&,&name&:&Bgwan&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fqydq&,&avatar&:{&id&:&464372bfcc3ecad&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&qyddai&,&name&:&Android开发&},&content&:&\u003Cp\u003Ean框架的网络框架是完全基于Xutils3.0以上的,这里需要感谢前辈\u002Fwyouflf\u002FxUtils3的无私奉献。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cb\u003EBegin\u003C\u002Fb\u003E\u003Cbr\u003E\u003Cp\u003E使用方法:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ecompile 'com.github.qydq:an-maven-base:0.0.9'\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003EDXUtils,XProgressCallBack和XCallBack是an框架提供的辅助类。\u003C\u002Fp\u003E\u003Cp\u003E1.得到以Xml的形式返回的数据\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void getxml() {\n
String url = \&http:\u002F\.cn\u002Fwmaps\u002Fxml\u002Fchina.xml\&;\n
DXUtils.Get(url, null, new XCallBack&String&() {\n\n@Override\n
public void onSuccess(String xmlString) {\nsuper.onSuccess(xmlString);\n
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();\n
XmlPullParser xmlPullParser = factory.newPullParser();\n
xmlPullParser.setInput(new StringReader(xmlString));\n
int eventType = xmlPullParser.getEventType();\n
while (eventType != XmlPullParser.END_DOCUMENT) {\nswitch (eventType) {\ncase XmlPullParser.START_TAG:\n
String nodeName = xmlPullParser.getName();\n
if (\&city\&.equals(nodeName)) {\n
String pName = xmlPullParser.getAttributeValue(0);\n
Log.e(\&TAG\&, \&city is \& + pName);\n
showToast(\&city is:\& + pName + \&weather is\&);\n
eventType = xmlPullParser.next();\n
} catch (Exception e) {\n
e.printStackTrace();\n
}\n\n@Override\n
public void onError(Throwable ex, boolean isOnCallback) {\nsuper.onError(ex, isOnCallback);\n
});\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E2.下载带进度的文件\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void downloadprogressfile() {\n\u002F\u002F文件下载地址\n
String url = \&\&;\n
\u002F\u002F文件保存在本地的路径\n
String filepath = \&\&;\n
DXUtils.DownLoadFile(url, filepath, new XProgressCallBack&File&() {\n\n@Override\n
public void onSuccess(File result) {\nsuper.onSuccess(result);\n
showToast(\&result:\& + result.toString());\n
}\n\n@Override\n
public void onError(Throwable ex, boolean isOnCallback) {\nsuper.onError(ex, isOnCallback);\n\n
});\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E3.下载普通类型的文件\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void downloadfile() {\n\u002F\u002F文件下载地址\n
String url = \&\&;\n
\u002F\u002F文件保存在本地的路径\n
String filepath = \&\&;\n
DXUtils.DownLoadFile(url, filepath, new XCallBack&File&() {\n@Override\n
public void onSuccess(File result) {\nsuper.onSuccess(result);\n
showToast(\&result:\& + result.toString());\n\n
}\n\n@Override\n
public void onError(Throwable ex, boolean isOnCallback) {\nsuper.onError(ex, isOnCallback);\n\n
});\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E4.上传文件\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F**\n * 上传文件(支持多文件上传)\n *\u002F\nprivate void uploadfile() {\n\u002F\u002F图片上传地址\n
String url = \&\&;\n
Map&String, Object& map = new HashMap&&();\n
\u002F\u002F传入自己的相应参数\n
\u002F\u002Fmap.put(key, value);\n
\u002F\u002Fmap.put(key, value);\n
DXUtils.UpLoadFile(url, map, new XCallBack&String&() {\n\n@Override\n
public void onSuccess(String result) {\nsuper.onSuccess(result);\n
showToast(\&result:\& + result);\n
}\n\n@Override\n
public void onError(Throwable ex, boolean isOnCallback) {\nsuper.onError(ex, isOnCallback);\n
});\n\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E5.an框架提供的Get请求\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void get() {\n
String url = \&http:\u002F\:88\u002F?app=idcard.get\&;\n
Map&String, String& map = new HashMap&&();\n
map.put(\&appkey\&, \&10003\&);\n
map.put(\&sign\&, \&b59bc3efdd4e83c99f2a4\&);\n
map.put(\&format\&, \&json\&);\n
map.put(\&idcard\&, \&011114\&);\n
DXUtils.Get(url, map, new XCallBack&PersonInfoBean&() {\n\n@Override\n
public void onSuccess(PersonInfoBean result) {\nsuper.onSuccess(result);\n
Log.e(\&result\&, result.toString());\n
showToast(\&result:\& + result.getResult());\n
}\n\n@Override\n
public void onError(Throwable ex, boolean isOnCallback) {\nsuper.onError(ex, isOnCallback);\n\n\n
});\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E6.an框架提供的Post请求\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void post() {\n
String url = \&http:\u002F\:88\u002F?app=idcard.get\&;\n
Map&String, Object& map = new HashMap&&();\n
map.put(\&appkey\&, \&10003\&);\n
map.put(\&sign\&, \&b59bc3efdd4e83c99f2a4\&);\n
map.put(\&format\&, \&json\&);\n
map.put(\&idcard\&, \&011114\&);\n
DXUtils.Post(url, map, new XCallBack&PersonInfoBean&() {\n\n@Override\n
public void onSuccess(PersonInfoBean result) {\nsuper.onSuccess(result);\n
Log.e(\&result\&, result.toString());\n
showToast(\&result,信息:\& + result.getMsgid());\n
}\n\n@Override\n
public void onError(Throwable ex, boolean isOnCallback) {\nsuper.onError(ex, isOnCallback);\n\n
});\n}\n\nEnd\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T17:18:14+08:00&,&url&:&\u002Fp\u002F&,&title&:&Android 利用an框架快速实现网络请求(含下载上传文件)&,&summary&:&an框架的网络框架是完全基于Xutils3.0以上的,这里需要感谢前辈\u002Fwyouflf\u002FxUtils3的无私奉献。 \u003Cb\u003EBegin\u003C\u002Fb\u003E 使用方法:compile 'com.github.qydq:an-maven-base:0.0.9'DXUtils,XProgressCallBack和XCallBack是an框架提供的辅助类。1.得到以Xml的形式返回的数据pri…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:0,&likesCount&:0}},&annotationDetail&:null,&commentsCount&:0,&likesCount&:0,&FULLINFO&:true}},&User&:{&qydq&:{&isFollowed&:false,&name&:&Bgwan&,&headline&:&专注于物联网领域,世界的通信标准从今开始改变,手机也可以是路由器,成功于视频直播,标准并不一定是Http\u002Fs,也可以是Bluetooth。&,&avatarUrl&:&https:\u002F\\u002F50\u002F464372bfcc3ecad_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&qydq&,&bio&:&即时通讯,软件设计与开发者,物联网,移动互联网,AIVRVI兴趣者&,&hash&:&071d1fea34ab3dcd844fdb&,&uid&:057300,&isOrg&:false,&description&:&专注于物联网领域,世界的通信标准从今开始改变,手机也可以是路由器,成功于视频直播,标准并不一定是Http\u002Fs,也可以是Bluetooth。&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\\u002Fpeople\u002Fqydq&,&avatar&:{&id&:&464372bfcc3ecad&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&nwebStickySidebar&:&sticky&,&androidPassThroughPush&:&all&,&newMore&:&new&,&liveReviewBuyBar&:&live_review_buy_bar_2&,&liveStore&:&ls_a2_b2_c1_f2&,&qawebThumbnailAbtest&:&old&,&searchHybridTabs&:&without-tabs&,&iOSEnableFeedModuleWWANAritclePreRender&:&iOS_FeedModule_WWAN_PreRender_Enable&,&isOffice&:&false&,&liveDetailWechatBanner&:&Live_detail_wechat_banner_1&,&newLiveFeedMediacard&:&old&,&homeUi2&:&default&,&recommendationAbtest&:&old&,&marketTab&:&market_tab_old&,&qrcodeLogin&:&qrcode&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&androidDbRecommendAction&:&open&,&zcmLighting&:&zcm&,&favAct&:&default&,&appStoreRateDialog&:&close&,&mobileQaPageProxyHeifetz&:&m_qa_page_nweb&,&default&:&None&,&androidDbFeedRepinSelection&:&open&,&wechatShareModal&:&wechat_share_modal_show&,&qaStickySidebar&:&sticky_sidebar&,&androidProfilePanel&:&panel_b&,&nwebWriteAnswer&:&experiment&}},&columns&:{&next&:{},&qyddai&:{&following&:false,&canManage&:false,&href&:&\u002Fapi\u002Fcolumns\u002Fqyddai&,&name&:&Android开发&,&creator&:{&slug&:&qydq&},&url&:&\u002Fqyddai&,&slug&:&qyddai&,&avatar&:{&id&:&v2-28a7c692cda8c760ec9aac&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&}}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&version&:&7.0&,&name&:&Trident&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}}

我要回帖

更多关于 部落冲突夜间模式7本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信