Android

Android Ripple Button with Background color

自从引入了 Meterial design,Android 变得漂亮了许多,比如从 Lollipop 开始 Button 默认就带有了 Ripple 效果。但如果给这个 Button 赋了 background 属性,改变了它的背景色,则会发现 Ripple 效果消失了。

如果要改变它的背景色,还想要有 Ripple 效果,那么不要改它的 background 属性,而是将它的 style 属性设置为 @style/Widget.AppCompat.Button.Colored,然后在 Colors.xml 中更改 colorAccent 的颜色值即可。但是要注意,这种方式类似改变“主题”,程序中所有的按钮、单选框等控件的颜色都会一同改变。

除了 colorAccent,还有 colorPrimary, colorPrimaryDark 等可以改变的主题颜色。

Android 开发中禁止屏幕自动旋转

在 iOS 开发中,可以在工程属性里设置全局支持的屏幕朝向。对于只需要支持竖屏显示的应用,在 Device Orientation 中只保留 Portrait,取消选择 Landscape Left, Landscape Right, Upside Down 即可。也可以单独针对某个 View Controller 设置屏幕朝向,实现 UIViewController 的 supportedInterfaceOrientations 方法即可。

团队中的 Android Developer 没处理过这种问题,于是我顺便了解了一下。发现 Android 似乎没有方法全局进行设置,只能针对 Activity 进行设置。

一种方法是在需要限制屏幕旋转的 Activity 的 onCreate 方法里,加入一句:

1
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

另外一种方法,是在 Androidmanifest.xml 中为需要限制屏幕旋转的 Activity 都添加属性:

1
android:screenOrientation="portrait"

如果需要全局进行限制,自然是采取前一种方法较好。可以让工程中的所有 Activity 都继承于一个基类 BaseActivity,那只须在 BaseActivity 里调用 setRequestedOrientation 即可。