# StatusTest
**Repository Path**: nicewind/StatusTest
## Basic Information
- **Project Name**: StatusTest
- **Description**: 一个甚多功能的项目.
- **Primary Language**: Android
- **License**: Not specified
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2016-11-24
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#一.NDK开发流程 好文:
- [NDK开发](http://www.cnblogs.com/zgqys1980/p/5478661.html)
- [NDK开发](http://blog.csdn.net/u012255016/article/details/51026437)
- [NDK开发](http://blog.csdn.net/yanbober/article/details/45309049/)
##1.下载NDK开发插件并配置引用路径
a.选中项目右键-->点击openModlueSetting-->配置路径
b.module的gradle中配置
ndk{
moduleName "NativeUtil" //生成的so名字(可自己进行指定)
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无(默认是全选的)。
ldLibs "log" //如果要使用log就把这个加上
}
c.local.property中配置 android.useDeprecatedNdk=true
##2.创建JAVA本地方法文件,静态加载本地SO文件.
static {
System.loadLibrary("NativeUtil");
}
public native String getStringFromC();
##3.命令行生成h头文件.(就是要到类路径下面)
cd src -->cd main/java -->javah -d ../jni -classpath . -jni com.modules.statustest.ndkdemo.NativeUtil
javah ==>命令行类似javac
-d ../jni ==>在上一个目录创建一个jni 文件夹
-classpath . ==>classpath执行路径。 " . " 表示相对路径 需要配置环境,或者直接指定。
-jni ==>生成命令把对应的Java文件生成头文件.
com.module.status.NativeUtil ==>classes
详细解释请看: http://blog.csdn.net/zzhays/article/details/10514767
创建命令 http://www.jianshu.com/p/e689d0196a17
##4.实现h头文件创建 .C 文件
##5.ndk-build 生成.so文件
这里需要配置ndk的环境变量,和写Android.mk \ application.mk文件
已经配置直接CD 到jni目录 执行ndk-build
没有配置ndk环境的情况下
直接运行,so库已经存在编译包中.
#二、沉浸式
直接在activity里面调用initStatus()方法,在XML的标题添加属性fitwindows=true
- [沉浸式链接](http://www.open-open.com/lib/view/open1455771321605.html)
**1.属性配置**
1、values:
2、values-v19:
3、values-v21:
**2.代码配置**
/**
* 6.0完美解决半透明黑边问题
*/
public void initStatus(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//当API>=21时,状态栏会自动增加一块半透明色块,这段代码将其设为透明色
Window window = getWindow();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}
}
}
最终都要设置fitwindow=true属性,不然布局会顶到statusbar的位置上面去.
#三、path
#四、service
#五、animation
#六、designsupport
- [MD编程思想](http://www.cnblogs.com/mengdd/p/5641187.html)
- [属性介绍]( http://www.open-open.com/lib/view/open1416663769680.html%20)(相关属性介绍)
- [CollapsingToolbarLayout属性介绍]( http://www.open-open.com/lib/view/open1438265746378.html)(相关属性介绍2)
#七(1)、转场动画
- [博客地址](http://blog.csdn.net/wl9739/article/details/52833668)
- [activity5种方式动画讲解](http://www.jianshu.com/p/c21216bf5f82)
- [转场动画讲解]( http://www.open-open.com/lib/view/open1416663769680.html) (正解)
Touch feedback(触摸反馈)
Reveal effect(揭露效果)
Activity transitions(Activity转换效果)
Curved motion(曲线运动)
View state changes (视图状态改变)
Animate Vector Drawables(可绘矢量动画)
一、XML配置方式
1.在res/目录下创建transition文件夹,在该文件夹下定义界面转场动画和共享元素的动画。
2.在res/value/style文件中为每个Activity指定转场动画的style并在AndroidManifest.xml文件中为每个Activity设置对应的android:theme。
3.在Activity调用startActivity()切换动画前,使用ActivityOptionsCompat来创建转场动画时的共享对象。
二、代码方式
- **swipebacklayout使用注意事项**
- @android:color/white
- true
`
//baseActviity中添加
mHelper = new SwipeBackActivityHelper(this);
mHelper.onActivityCreate();
getWindow().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));
//实现接口 SwipeBackActivityBase
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mHelper.onPostCreate();
}
@Overr public View findViewById(int id) {
View v = super.findViewById(id);
if (v == null && mHelper != null)
return mHelper.findViewById(id);
return v;
}
@Override
public SwipeBackLayout getSwipeBackLayout() {
return mHelper.getSwipeBackLayout();
}
@Override
public void setSwipeBackEnable(boolean enable) {
getSwipeBackLayout().setEnableGesture(enable);
}
@Override
public void scrollToFinishActivity() {
Utils.convertActivityToTranslucent(this);
getSwipeBackLayout().scrollToFinishActivity();
}
- 1.代码给viewgroup设置item增加减少的进出动画
ScaleAnimation sa =new ScaleAnimation(0.5f, 1f, 0.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
sa.setDuration(2000);
LayoutAnimationController lac = new LayoutAnimationController(sa, 0.5f);
lac.setOrder(LayoutAnimationController.ORDER_REVERSE);
rootView.setLayoutAnimation(lac);
- 2.android:animateLayoutChanges="true"
表示布局中childView的的大小改变,删除,增加时的 fade in或者fade out的动画
android:layoutAnimation="@anim/listview_anim"
#七(2)、水波纹
两种方式
##1.在value-v21 下的style 文件下的 APP 的主题中设置波纹的颜色
- @color/colorAccent
- @color/colorAccent
##2.drawable-v21 下的selector_bg.XML文件下用
##3.在普通的drawable下的selector_bg.xml文件下用普通的selector标签或者shape等在相应的btn,tab,checkbox等空间设置 background .
##4.全局item设置点击水波纹点击
- @drawable/selectable_item_background
- @drawable/selectable_item_background
#八、权限问题设置
- [权限github地址]( https://github.com/googlesamples/easypermissions)
注意事项
1.compile 'pub.devrel:easypermissions:0.2.0' 版本以下只能用API23的编译版本,以上就要API24以上版本编译.0.3版本用API25
- 使用方法
1.实现 EasyPermissions.PermissionCallbacks 接口
2.调用EasyPermissions.requestPermissions(this, rationale, permissionRequestCode, perms);
3.实现回调
4.OK了.
#九、推流,拉流播放器.
- [easydarwin开源社区](http://www.easydarwin.org/)
- [github地址easydarwin](https://github.com/EasyDarwin/EasyDarwin)
- [bilibili-github地址](https://github.com/Bilibili/ijkplayer)