注意引入相关依赖:
Java代码
compile 'comandroidsupport:appcompat-v7:2221'
compile 'comandroidsupport:support-v4:2221'
compile 'comandroidsupport:design:2220'
(一)colorsxml 和 stylesxml
首先我们定义几个颜色:
res/values/colorxml
XML/HTML代码
<xml version="10" encoding="utf-8">
<resources>
<color name="primary">#FF03A9F4</color>
<color name="primary_dark">#FF0288D1</color>
<color name="status_bar_color">@color/primary_dark</color>
</resources>
下面定义几个stylesxml
注意文件夹的路径:
values/stylesxml
XML/HTML代码
<resources>
<style name="BaseAppTheme" parent="ThemeAppCompatLightNoActionBar">
<!-- Customize your theme here -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">#FF4081</item>
</style>
<!-- Base application theme -->
<style name="AppTheme" parent="@style/BaseAppTheme">
</style>
</resources>
values-v19
XML/HTML代码
<resources>
<style name="AppTheme" parent="@style/BaseAppTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
ok,这个没撒说的。注意我们的主题是基于NoActionBar的,android:windowTranslucentStatus这个属性是v19开始引入的。
(二)布局文件
activity_mainxml
XML/HTML代码
<androidsupportv4widgetDrawerLayout
xmlns:android="http://schemasandroidcom/apk/res/android"
xmlns:app="http://schemasandroidcom/apk/res-auto"
xmlns:tools="http://schemasandroidcom/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:id="@+id/id_main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidsupportv7widgetToolbar
android:id="@+id/id_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="attr/colorPrimary"
android:fitsSystemWindows="true"
app:popupTheme="@style/ThemeOverlayAppCompatLight"/>
<TextView
android:id="@+id/id_tv_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="HelloWorld"
android:textSize="30sp"/>
</LinearLayout>
<androidsupportdesignwidgetNavigationView
android:id="@+id/id_nv_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/header_just_username"
app:menu="@menu/menu_drawer"
/>
</androidsupportv4widgetDrawerLayout>
DrawerLayout内部一个LinearLayout作为内容区域,一个NavigationView作为菜单。
注意下Toolbar的高度设置为wrap_content。
然后我们的NavigationView中又依赖一个布局文件和一个menu的文件。
header_just_usernamexml
XML/HTML代码
<xml version="10" encoding="utf-8">
<RelativeLayout xmlns:android="http://schemasandroidcom/apk/res/android"
android:layout_width="match_parent"
android:layout_height="192dp"
android:background="attr/colorPrimaryDark"
android:orientation="vertical"
android:padding="16dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlayAppCompatDark">
<TextView
android:id="@+id/id_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="16dp"
android:text="http://blogcsdnnet/lmj623565791"/>
<TextView
android:id="@+id/id_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/id_link"
android:text="Zhang Hongyang"/>
<ImageView
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_above="@id/id_username"
android:layout_marginBottom="16dp"
android:src="@mipmap/ic_launcher"/>
</RelativeLayout>
menu的文件就不贴了,更加详细的可以去参考Android 自己实现 NavigationView [Design Support Library(1)]。
大体看完布局文件以后,有几个点要特别注意:
• ToolBar高度设置为wrap_content
• ToolBar添加属性android:fitsSystemWindows="true"
• header_just_usernamexml的跟布局RelativeLayout,添加属性android:fitsSystemWindows="true"
android:fitsSystemWindows这个属性,主要是通过调整当前设置这个属性的view的padding去为我们的status_bar留下空间。
根据上面的解释,如果你不写,那么状态栏和Toolbar就会有挤一块的感觉了,类似会这样:
ok,最后看下代码。
(三)Activity的代码
Java代码
package comzhycolorfulstatusbar;
import androidosBundle;
import androidsupportv7appAppCompatActivity;
import androidsupportv7widgetToolbar;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
Toolbar toolbar = (Toolbar) findViewById(Ridid_toolbar);
setSupportActionBar(toolbar);
//StatusBarCompatcompat(this, getResources()getColor(Rcolorstatus_bar_color));
//StatusBarCompatcompat(this);
}
}
没撒说的,就是setSupportActionBar。
那么现在44的效果图是:
其实还不错,有个渐变的效果。
现在5x的效果:
可以看到5x默认并非是一个渐变的效果,类似是一个深一点的颜色。
再看看我们md的规范
状态栏应该是一个比Toolbar背景色,稍微深一点的颜色。
这么看来,我们还是有必要去为44做点适配工作,让其竟可能和5x显示效果一致,或者说尽可能符合md的规范。
四、调整44的显示方案
那么问题来了?如何做呢?
咱们这么看,44之后加入windowTranslucentStatus的属性之后,也就是我们可以用到状态栏的区域了。
既然我们可以用到这块区域,那么我们只要在根布局去设置一个与状态栏等高的View,设置背景色为我们期望的颜色就可以了。
于是有了以下的代码:
Java代码
package comzhycolorfulstatusbar;
import androidannotationTargetApi;
import androidappActivity;
import androidcontentContext;
import androidgraphicsColor;
import androidosBuild;
import androidviewView;
import androidviewViewGroup;
/
Created by zhy on 15/9/21
/
public class StatusBarCompat
{
private static final int INVALID_VAL = -1;
private static final int COLOR_DEFAULT = ColorparseColor("#20000000");
@TargetApi(BuildVERSION_CODESLOLLIPOP)
public static void compat(Activity activity, int statusColor)
{
if (BuildVERSIONSDK_INT >= BuildVERSION_CODESLOLLIPOP)
{
if (statusColor != INVALID_VAL)
{
activitygetWindow()setStatusBarColor(statusColor);
}
return;
}
if (BuildVERSIONSDK_INT >= BuildVERSION_CODESKITKAT && BuildVERSIONSDK_INT < BuildVERSION_CODESLOLLIPOP)
{
int color = COLOR_DEFAULT;
ViewGroup contentView = (ViewGroup) activityfindViewById(androidRidcontent);
if (statusColor != INVALID_VAL)
{
color = statusColor;
}
View statusBarView = new View(activity);
ViewGroupLayoutParams lp = new ViewGroupLayoutParams(ViewGroupLayoutParamsMATCH_PARENT,
getStatusBarHeight(activity));
statusBarViewsetBackgroundColor(color);
contentViewaddView(statusBarView, lp);
}
}
public static void compat(Activity activity)
{
compat(activity, INVALID_VAL);
}
public static int getStatusBarHeight(Context context)
{
int result = 0;
int resourceId = contextgetResources()getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0)
{
result = contextgetResources()getDimensionPixelSize(resourceId);
}
return result;
}
}
代码的思路很简单,根据Activity找到androidRcontent,在其中添加一个View(高度为statusbarHeight,背景色为我们设置的颜色,默认为半透明的黑色)。
那么只需要在Activity里面去写上:
Java代码
StatusBarCompatcompat(this);
就可以了。
如果你希望自己设置状态看颜色,那么就用这个方法:
Java代码
StatusBarCompatcompat(this, getResources()getColor(Rcolorstatus_bar_color));
这样的话我们就解决了44到5x的适配问题,一行代码解决,感觉还是不错的。
最后提一下,对于50由于提供了setStatusBarColor去设置状态栏颜色,但是这个方法不能在主题中设置windowTranslucentStatus属性。所以,可以编写一个value-v21文件夹,里面stylesxml写入:
XML/HTML代码
<resources>
<!-- Base application theme -->
<style name="AppTheme" parent="@style/BaseAppTheme">
</style>
</resources>
其实就是不要有windowTranslucentStatus属性。
接下来,对于默认的效果就不测试了,参考上面的效果图。
我们测试个设置状态栏颜色的,我们这里设置个红色。
44 模拟器
5x 真机
resources是APK中的资源文件,例如布局等等,android 反编译的方法,需要用到几个工具,百度一下都能找到下载地址
dex2jar JD-GUI apktool
反编译步骤:
1反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI
前者是将apk中的classesdex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:
1首先将apk文件,将后缀改为zip,解压,得到其中的classesdex,它就是java文件编译再通过dx工具打包而成的;
2解压下载的dex2jar,将classesdex复制到dex2jarbat所在目录。在命令行下定位到dex2jarbat所在目录
运行 dex2jarbat classesdex
生成 classesdexdex2jarjar
2反编译apk生成程序的源代码和、XML配置、语言资源等文件
还是下载工具,这次用到的是apktool
具体步骤:
将下载的两个包解压到同一个文件夹下,应该会有三个文件:aaptexe,apktoolbat,apktooljar
1解压缩下载的两个文件包,apktool-install-windows-r04-brut1tar解压缩后得到的包里有aaptexe 和apktoolbat(注意要把apktool141tar解压后的一个jar 文件copy到解压后的\apktool-install-windows-r04-brut1文件夹里)
2特别注意:你要反编译的文件一定要放在C盘的根目录里
安卓android50刷机包安装使用教程
1、刷机前先在下载一个Nexus驱动到电脑上,如果已经有的请忽略这一步。
2、备份手机(非常重要)。
3、在谷歌开发者网站上下载Nexus4最新Android50固件,下载完成后解压tgr的文件。
4、解压出来的tgr文件包仅仅是程序框架,里面没有包含adb (Android调试工具)和基带文件,需要我们单独放进去,下载之后解压缩把四个文件和之前的tgr包放在一起;
5、Nexus4关机,同时按住音量键再按开机,手机会进入bootloader模式,用手机连接上电脑。
6、打开tgr压缩包,点击flash-allbat文件,Andriod50正在刷机中,手机会自动重启表示刷机完成。
如果手机重启后刷机不成功解决方式
1、长按电源键关机。
2、同时按住音量键,在开机。进入boorloader模式,选择recovery mode,点击电源键进入。
3、再长按电源键,屏幕上的英文看不懂的可忽略。
4、进入wipe data-yes,选择wipe cache,选择reboot。
5、关机重启,Android50刷机完毕。
1安卓系统如何修改版本
手机必须root,并装有re管理器。如图为某手机系统信息。
用re管理器进入系统更目录,打开(system)文件夹,找到build,prop文件,复制到内存卡。
复制后,用文本编辑器打开。找到robuildversionrelease=。词后面的即为系统版本号。把它改成自己想要的即可。但是,绝对不可以改成5XX或以上,否则手机将会坏掉。
步骤阅读
4
改好保存之后,将原来的文件备份一下,(出现问题后可以换回来),把修改之后的文件复制到原来的地方。并修改权限。如图。
5
此方法并不一定有用,但改成高版本号后,可以装装逼
2怎么把被改了的手机型号改回来
改回型号(要root)
1打开RE管理器 (ROOT文件管理,可以下载得到(再次声明要root))
2单击打开“system”文件夹
3将状态挂载为“读/写”
4长按“buildprop”文件,弹出菜单,选择“用文本编辑器打开
5按需要修改下列条目,前半段是代码(不可修改代码!),等号后面是要显示的项:
①型号(手机机型):
roproductmodel=
例:roproductmodel=HUAWEI U8661
②Android 版本
robuildversionrelease=
例:
robuildversionrelease=236专属版
③版本号
appssettingproductrelease=
例:
appssettingproductrelease=U8661V101B01
6按下“MENU”键,选择“保存并退出”
7 重启
3手机被修改Android版本,root不了,该怎么改回来
1、如果说你只是简单的使用安卓手机,因为这一部分人基本上用不到ROOT 之后的任何功能。
ROOT 过之后,反而容易感染病毒,没ROOT 的手机虽然也容易感染病毒,但是它破坏不了你的系统。 2、如果你对刷机不了解,就不要进行ROOT。
因为目前用安卓系统这么久。发现ROOT唯一的好处不过就是刷个新的基带或者系统。
尝尝鲜、就这样。刷机本身是有风险的,对刷机不了解还盲目ROOT了乱刷把手机变砖了哭都没地方去。
4、最后一点,必须得相当注意!因为你的手机如果ROOT了,厂家就不再保修了。因为你已经对自己手机的根本系统擅自做了更改、所以,当你ROOT成功那一瞬间。
手机就真正完全是你的了。
4安卓怎么在原来的系统上更换一个版本
在一部安卓手机系统为235并且已经ROOT的手机里,我们需要用到RE文件管理器来实现修改关于手机里面的部分信息。下面我们来修改手机型号和系统版本。
手机ROOT后下载RE文件管理器,并且点击RE管理器在根目录下挂载为读写模式,然后点击根目录下的SYSTM文件,点开之后找到BUILDPROP这个文件,然后长按不松选择用文本编辑器打开,我们要修改的部分有四处:
1、RO PRODUCTBRAND------手机品牌
2、RO PRODUCTBRAND MODEL---型号
3、RO PRODUCTBRAND MANUFACTURER----制造厂商
4 RO BUILD VERSION RELEASE---安卓版本信息
以上都可以改成自己想显示的信息,当然如若影响到手机性能直接还原就行。
修改完成后点击保存并退出,关机重启!
5怎么更改安卓游戏版本号
该版本需要反编译 反编译以后 里边有个AndroidManifestxml文件
把这个文件的
android:versionCode="1"
android:versionName="10"
这两个值改一下就好了 上边那个 加1 下边那个 改成你想要的版本号
例如:
android:versionCode="2"
android:versionName="21"
这样版本就由原来的10变成了21
本视频演示机型:戴尔-成就5890,适用系统:windows10家庭版,软件版本:djjavadecompilerv3121298;
class格式的文件目前在安卓手机上是无法打开的,需要打开class文件时,可以在电脑中安装java反编译工具,将下载的反编译工具解压到电脑桌面,打开解压文件所在的文件夹,运行这个名为DJ的应用程序;
在弹出的窗口中点击File,在打开的菜单中选择Open;
选择Class文件所在路径后选择要打开的文件,点击右下角的打开,即可在电脑中打开class文件;
本期视频就到这里,感谢观看。
以前写的程序都主要是针对android23和android4x平台的,最近想从源码的角度看一下50都增添了哪些新的特性,那么必须要有源码了。怎么下载源码,谷歌官方给出了详细的介绍 。想搞懂源码的话不推荐windows操作系统,这里推荐一款集成android开发以及各种反编译工具的linux操作系统-Santoku各种IDE, 环境等都随系统配置好了,开发人员只需要关注自己想做的事情就行了。为了看最新的android源码:
1更新java到java 7:
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
2设置默认的java版本(系统中可能有多个版本的jdk):
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
3针对santoku或者Ubuntu 1204的系统,需要安装以下的package(其他版本系统详情见http://sourceandroidcom/source/initializinghtml):
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGLso1 /usr/lib/i386-linux-gnu/libGLso
4安装repo
41新建保存repo文件的目录
$ mkdir ~/bin
$ PATH=~/bin:$PATH
42下载repo文件,并添加可执行权限
$ curl https://storagegoogleapiscom/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
5初始化repo
51新建repo工作目录
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
52初始化工作目录,下载最新的android-502_r1分支
repo init -u https://androidgooglesourcecom/platform/manifest -b android-502_r1
53开始下载源码(需要git config 用户名和email地址,填写自己常用的即可)
$ repo sync
欢迎分享,转载请注明来源:品搜搜测评网