Android获取view某个坐标的颜色值,更改状态栏颜色
2016-12-01 11:51
435 查看
今天做一个Android项目,其中用到一个小功能,要将状态栏的颜色设置和界面风格一样,动态变化。界面是一个webview,也就是状态栏的颜色要和网页头部颜色保持一样的颜色风格,做完了,在这记录一下。
一、状态栏更换背景色
在Activity的onCreate函数中添加:
这里将状态栏设置成了透明。由于使用了沉侵式状态栏,界面布局是从屏幕最顶端(包括状态栏位置)开始,所以这里需要在界面最顶端写一个和状态栏高度一样的view。然后设置这个view的background颜色(该颜色来自view的指定坐标点的颜色,下面会讲到如何获取),由于状态栏设置的是透明色,所以看起来,状态栏就是view的颜色。
二、设置view的颜色(这里我界面是嵌入了一个webview)
1. 首先设置view的高度和状态栏一样
2.获取webview指定坐标颜色并设置给view
一、状态栏更换背景色
在Activity的onCreate函数中添加:
// 4.4及以上版本开启 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setTranslucentStatus(true); SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); //此处可以重新指定状态栏颜色 tintManager.setStatusBarTintColor(Color.parseColor("#00000000")); } @TargetApi(19) private void setTranslucentStatus(boolean on) { Window win = getWindow(); WindowManager.LayoutParams winParams = win.getAttributes(); final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; if (on) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } win.setAttributes(winParams); }
这里将状态栏设置成了透明。由于使用了沉侵式状态栏,界面布局是从屏幕最顶端(包括状态栏位置)开始,所以这里需要在界面最顶端写一个和状态栏高度一样的view。然后设置这个view的background颜色(该颜色来自view的指定坐标点的颜色,下面会讲到如何获取),由于状态栏设置的是透明色,所以看起来,状态栏就是view的颜色。
二、设置view的颜色(这里我界面是嵌入了一个webview)
1. 首先设置view的高度和状态栏一样
View webview_top = findViewById(R.id.webview_top); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) webview_top.getLayoutParams(); //获取status_bar_height资源的ID int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { //根据资源ID获取响应的尺寸值 layoutParams.height = getResources().getDimensionPixelSize(resourceId); } webview_top.setLayoutParams(layoutParams);
2.获取webview指定坐标颜色并设置给view
Bitmap bitmap = getBitmapFromView(webView); if (null != bitmap) { int pixel = bitmap.getPixel(200, 5); //获取颜色 int redValue = Color.red(pixel); int greenValue = Color.green(pixel); int blueValue = Color.blue(pixel); Log.i(TAG, "【颜色值】 #" + Integer.toHexString(pixel).toUpperCase(), false); webview_top.setBackgroundColor(pixel); bitmap.recycle(); } /** * 获取view的bitmap * @param v * @return */ public static Bitmap getBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565); Canvas c = new Canvas(b); v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); // Draw background Drawable bgDrawable = v.getBackground(); if (bgDrawable != null) { bgDrawable.draw(c); } else { c.drawColor(Color.WHITE); } // Draw view to canvas v.draw(c); return b; }
相关文章推荐
- 精确获取屏幕尺寸 判断是否是平板 文字根据状态更改颜色 android:textColor 背景色根据状态更改颜色 android:backgroup 启动APK的默认Activit
- android获取/更改gps和WIFI状态【转载】
- Android中View的坐标矩形获取
- android获取View上某点的颜色
- Android 获得控件坐标及获取状态栏高度
- 坐标相关的 android应用程序中获取view的位置
- Android 通过按钮Button更改全部的TextView、EditText、Button的字体大小、字体颜色、背景颜色
- Android 初学------获取View的宽高 坐标 边距
- Android TextView 状态切换时变化文字颜色
- android中更改spinner、AutoCompleteTextView分割线的颜色
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- android获取/更改gps和WIFI状态
- 文字根据状态更改颜色 android:textColor
- android 获取View的坐标
- android中巧妙更改spinner、AutoCompleteTextView分割线的颜色值(spinner AutoCompleteTextView divider color)
- android 获取view在屏幕内的x y坐标
- android中为TextView动态改变字体颜色,如点击时更改
- android listview item点击时更改textview的颜色 代码中实现
- Android代码中更改TextView颜色
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)