RadioButton和CheckBox使用
在代码控制RadioButton的状态,状态改了,但是UI没有变,做法是使用CheckBox。
如果有下图这种需求,多个支付操作,在切换的时候不想让RadioButton有点击操作,而是通过控制外层ViewGroup的点击来控制RadioButton的UI,需要设置RadioButton.setOnclickable(false)
<CheckBox
android:id="@+id/pay_radio_z"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/radiobutton_background_selector"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:padding="@dimen/dp_10"
style="@android:style/Widget.DeviceDefault.Light.CompoundButton.RadioButton"/>
Android4.4及以上设置状态栏指定颜色或者透明
/**
* 设置状态栏颜色
*/
public static void setStatusBarColor(Activity activity,boolean isTranslucent) {
if (activity == null){
return;
}
String activityName = activity.getClass().getSimpleName();
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
View decorView = activity.getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
if (isTranslucent){
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
}
else {
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, R.color.colorAccent));
}
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 生成一个状态栏大小的矩形
View statusBarView = new View(activity);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
getStatusBarHeight(activity));
statusBarView.setLayoutParams(params);
if (isTranslucent){
statusBarView.setBackgroundColor(Color.TRANSPARENT);
}else {
statusBarView.setBackgroundColor(ContextCompat.getColor(activity, R.color.colorAccent));
}
// 添加 statusView 到布局中
ViewGroup decorView = (ViewGroup)activity.getWindow().getDecorView();
decorView.addView(statusBarView);
}
} catch (Exception e) {
e.printStackTrace();
LogUtil.e(TAG,"设置状态栏透明异常,方法名:setStatusBarColor");
}
}
/**
* 获取手机状态栏高度
* @param activity
* @return
*/
public static int getStatusBarHeight(Activity activity){
int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusHeight = activity.getResources().getDimensionPixelSize(resourceId);
return statusHeight;
}
隐藏状态栏
/**
* 设置指定界面全屏显示
* @param context
*/
public static void setFullscreenMode(Activity context){
if (context != null) {
context.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
Android中颜色透明度对应16进制值
<!--百分比-开头字母-->
<!--100% —FF-->
<!--95% — F2-->
<!--90% — E6-->
<!--85% — D9-->
<!--80% — CC-->
<!--75% — BF-->
<!--70% — B3-->
<!--65% — A6-->
<!--60% — 99-->
<!--55% — 8C-->
<!--50% — 80-->
<!--45% — 73-->
<!--40% — 66-->
<!--35% — 59-->
<!--30% — 4D-->
<!--25% — 40-->
<!--20% — 33-->
<!--15% — 26-->
<!--10% — 1A-->
<!--5% — 0D-->
<!--0% — 00-->
android 移除栈中指定的activity
需求:MainActivity >> SecondActivity >> ThirdActivity >> HomeActivity,SecondActivity 点击返回回到MainActivity 。这个地方会有一个问题就是在进入HomeActivity之后,点击返回会回到MainActivity ,但是应该是结束应用才对。
如何在当前页面finish掉其他的界面呢,方法当然会有很多,建议使用EventBus发送消息。
Android打开各种类型的文件、预览不同类型的文件
/**
* 打开一个文件
*
* @param filePath
* 文件的绝对路径
*/
private void openFile(final String filePath)
{
String ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase(Locale.US);
try
{
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String temp = ext.substring(1);
String mime = mimeTypeMap.getMimeTypeFromExtension(temp);
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(filePath);
intent.setDataAndType(Uri.fromFile(file), mime);
startActivity(intent);
}
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(getApplicationContext(), "无法打开后缀名为." + ext + "的文件!",
Toast.LENGTH_LONG).show();
}
}
原文地址:http://blog.csdn.net/eieihihi/article/details/45872051
Fragment动态全屏
在activity中设置如下代码,在对应的fragment的setUserVisibleHint调用。
/**
* 控制是否全屏
* @param isfull
*/
public void setFullScreen(boolean isfull){
if (isfull){
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
else {
WindowManager.LayoutParams attrs = getWindow()
.getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
}
}