您的位置:首页 > 移动开发 > Android开发

[置顶] Android —— 代码大全

2016-08-29 16:50 288 查看

一、theme设置夜间模式

1.使用几个常量标识

使用view的SYSTEM_UI_FLAG_LOW_PROFILE和SYSTEM_UI_FLAG_VISIBLE常量进行动态设置。

实例:

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "toast", Toast.LENGTH_LONG).show();

int currentVis = v.getSystemUiVisibility();
int newVis;
if ((currentVis & View.SYSTEM_UI_FLAG_LOW_PROFILE)
== View.SYSTEM_UI_FLAG_LOW_PROFILE) {
newVis = View.SYSTEM_UI_FLAG_VISIBLE;
} else {
newVis = View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
v.setSystemUiVisibility(newVis);
}
});


注:实践时并没有达到想要的效果,也继承的是AppCompatActivity,但是点击并没有“夜间模式”,哪位大神知道为什么请留言呀!

2.这里介绍一下Android 夜间模式切换,颜色渐变效果实现

大神博客

总结:

如果在setContentView()方法之前调用是可以改变主题的,因为布局还没生成。

二 、动态创建视图

注:对于 LinearLayout :

当 android:orientation=”vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。

当 android:orientation=”horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。

可以对父布局的gravity属性进行设置。

三、动画视图

参考:Android之属性动画、值动画

ValueAnimator的AnimationUpdateListener:

动画的getAnimatedFraction()方法会返回当前动画完成的百分比。(ObjectAnimator是ValueAnimator的子类)

// 1. 在回调中手动更新View对应属性:
AnimatorUpdateListener l = new AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
// 当前的分度值范围为0.0f->1.0f
// 分度值是动画执行的百分比。区别于AnimatedValue。
float fraction = animation.getAnimatedFraction();
// 以下的的效果为 View从完全透明到不透明,
view.setAlpha(fraction);
// Y方向向下移动300px的距离.
view.setTranslationY(fraction * 300.0f);
}
};
ValueAnimator mAnim = ValueAnimator.ofFloat(0f, 1.0f);
mAnim.addUpdateListener(l);
mAnim.setDuration(1000);
mAnim.start();


各个动画类作用,以及其之间的关系:

同类技术对比:

1 补间动画(Tween Animation):

1)渐变动画支持四种类型:平移(Translate)、旋转(Rotate)、缩放(Scale)、不透明度(Alpha)。

2)只是显示的位置变动,View的实际位置未改变,表现为View移动到其他地方,点击事件仍在原处才能响应。

2 帧动画(Frame Animation):

1)用于生成连续的Gif效果图。

2)DrawableAnimation也是指此动画。

3属性动画(Property Animation):-执行类(ObjectAnimator)

1)支持对所有View能更新的属性的动画(需要属性的setXxx()和getXxx())。

2)更改的是View实际的属性,所以不会影响其在动画执行后所在位置的正常使用。

3)Android3.0 (API11)及以后出现的功能,3.0之前的版本可使用github第三方开源库nineoldandroids.jar进行支持。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: