当前位置:首页 » 安卓系统 » android模糊效果

android模糊效果

发布时间: 2022-05-01 17:47:43

A. Android ListView在滚动的时候下上边界会出现模糊效果,如何去除

如果你想让边界明显一点的话。可以设置背景图片啊!用shape自定义图片。那样可以解决背景边框问题!
http://blog.csdn.net/ch_984326013/article/details/6613138

B. Android 如何给登陆背景加一层模糊,如图所示

这里的模糊都是给设置的背景半透明,就是android:background设置为半透明的在color.xml中定义半透明的方式是这样,#AARRGGBB,#后边的AA就是透明度,从00不透明到FF纯透明,后面的RRGGBB是从000000到FFFFFF的从黑色到白色,根据你的界面应该是半透明白色,估计应该是个#99FFFFFF差不多的,后面的FFFFFF表示白色,99表示透明度,注意 是16进制的,这样给你的要透明的控件设置背景就可以实现半透明了

C. 怎么实现Android 布局背景模糊化处理

在模仿 IOS 密码输入页面的时候发现其背景有模糊处理,于是了解了一下并记录下来,以便使用.在Android 中具体实现方法如下
private void applyBlur() {

// 获取壁纸管理器
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this.getContext());
// 获取当前壁纸
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
// 将Drawable,转成Bitmap
Bitmap bmp = ((BitmapDrawable) wallpaperDrawable).getBitmap();

blur(bmp);
}

下面之所以要进行small 和big的处理,是因为仅仅靠ScriptIntrinsicBlur 来处理模式,不能到达更模式的效果,如果需要加深模式效果就需要先把背景图片缩小,在处理完之后再放大.这个可以使用Matrix 来实现,而且这样可以缩短模糊化得时间
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg) {
long startMs = System.currentTimeMillis();
float radius = 20;

bkg = small(bkg);
Bitmap bitmap = bkg.(bkg.getConfig(), true);

final RenderScript rs = RenderScript.create(this.getContext());
final Allocation input = Allocation.createFromBitmap(rs, bkg, Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setRadius(radius);
script.setInput(input);
script.forEach(output);
output.To(bitmap);

bitmap = big(bitmap);
setBackground(new BitmapDrawable(getResources(), bitmap));
rs.destroy();
Log.d("zhangle","blur take away:" + (System.currentTimeMillis() - startMs )+ "ms");
}

private static Bitmap big(Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(4f,4f); //长和宽放大缩小的比例
Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
return resizeBmp;
}

private static Bitmap small(Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(0.25f,0.25f); //长和宽放大缩小的比例
Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
return resizeBmp;
}

D. android 背景虚化原理是什么

1. RenderScript

谈到高斯模糊,第一个想到的就是RenderScript。RenderScript是由Android3.0引入,用来在Android上编写高性能代码的一种语言(使用C99标准)。 引用官方文档的描述:
RenderScript runtime will parallelize work across all processors available on a device, such as multi-core CPUs, GPUs, or DSPs, allowing you to focus on expressing algorithms rather than scheling work or load balancing.
为了在Android中使用RenderScript,我们需要(直接贴官方文档,比直译更通俗易懂):
High-performance compute kernels are written in a C99-derived language.
A java API is used for managing the lifetime of RenderScript resources and controlling kernel execution.
学习文档:http://developer.android.com/guide/topics/renderscript/compute.html
上面两点总结成一句话为:我们需要一组compute kernels(.rs文件中编写),及一组用于控制renderScript相关的java api(.rs文件自动生成为java类)。 由于compute kernels的编写需要一定的学习成本,从JELLY_BEAN_MR1开始,Androied内置了一些compute kernels用于常用的操作,其中就包括了Gaussian blur。
下面,通过实操来讲解一下RenderScript来实现高斯模糊,最终实现效果(讲文字背景进行模糊处理):

布局:

[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/splash"
android:scaleType="centerCrop" />

<TextView
android:id="@+id/text"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Gaussian Blur"
android:textColor="@android:color/black"
android:layout_gravity="center_vertical"
android:textStyle="bold"
android:textSize="48sp" />

<LinearLayout
android:id="@+id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7f000000"
android:orientation="vertical"
android:layout_gravity="bottom" />
</FrameLayout>
核心代码:

[java] view plain
private void applyBlur() {
image.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

@Override
public boolean onPreDraw() {
image.getViewTreeObserver().removeOnPreDrawListener(this);
image.buildDrawingCache();
Bitmap bmp = image.getDrawingCache();
blur(bmp, text, true);
return true;
}
});
}

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg, View view) {
long startMs = System.currentTimeMillis();
float radius = 20;

Bitmap overlay = Bitmap.createBitmap((int)(view.getMeasuredWidth()), (int)(view.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft(), -view.getTop());
canvas.drawBitmap(bkg, 0, 0, null);

RenderScript rs = RenderScript.create(SecondActivity.this);

Allocation overlayAlloc = Allocation.createFromBitmap(rs, overlay);
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement());
blur.setInput(overlayAlloc);
blur.setRadius(radius);
blur.forEach(overlayAlloc);
overlayAlloc.To(overlay);
view.setBackground(new BitmapDrawable(getResources(), overlay));
rs.destroy();

statusText.setText("cost " + (System.currentTimeMillis() - startMs) + "ms");
}
当ImageView开始加载背景图时,取出它的drawableCache,进行blur处理,Gaussian blur的主要逻辑在blur函数中。对于在Java中使用RenderScript,文档中也有详细描述,对应到我们的代码,步骤为:
初始化一个RenderScript Context.
至少创建一个Allocation对象用于存储需要处理的数据.
创建compute kernel的实例,本例中是内置的ScriptIntrinsicBlur对象.
设置ScriptIntrinsicBlur实例的相关属性,包括Allocation, radius等.
开始blur操作,对应(forEach).
将blur后的结果拷贝回bitmap中。

E. 安卓手机拍照很清晰,发朋友圈很模糊怎么回事

安卓手机拍的照片清晰,发到朋友圈后,用iPhone手机看却很模糊,这是由三个原因导致的。首先,微信朋友圈不像朋友之间点对点聊天那样可以发原图,上传到朋友圈的照片都是经过压缩的,因为图片不经过压缩上传到服务器上会很占硬盘空间,对腾讯来说成本过高。以下图的猫咪为例,原图是我用单反拍摄后处理的,文件大小在1MB左右,分辨率1920×1280。用安卓手机上传到朋友圈后再下载回来,发现被压缩到500KB,分辨率也变成了1620×1080。通过下图左右两边的对比就会发现,原图画质中猫咪的毛发清晰,瞳孔也十分明亮,而朋友圈画质的毛发细节基本上糊成一团了,瞳孔也失去了光彩。也就是说我们平时用手机拍摄的照片被上传到朋友圈之后,即使原图的分辨率再高,最终画质肯定是有损失的。所以用其它手机看会发现比原图模糊。


还有一种比较少见的可能性就是,一些网友的苹果手机换过屏幕,而且换上的是非原装的国产屏幕。这种国产屏平时用用可能看不出什么问题,但是在欣赏图片、视频的时候,就容易模糊发虚,显示效果肯定是不如原装屏的。总而言之,同样的朋友圈照片在安卓手机上看和在苹果手机上看,画质不一样是正常现象。由于朋友圈会压缩照片,所以大家在和朋友分享图片的时候尽量用点对点传原图的方式,不要用朋友圈。

F. android如何实现透明模糊效果

背景设置为你要模糊的颜色,透明度设置的高点就行了

G. 安卓系统设置动态模糊是什么意思

动态模糊或运动模糊是静态场景或一系列的图片像电影或是动画中快速移动的物体造成明显的模糊拖动痕迹。在大多数电子游戏中,都提供动态模糊特效。如果开启动态模糊,连续画面看起来将会相对平滑和顺畅(但帧数其实没有改变),在动作场景和快速运动的场景中还能获得更加真实的体验——例如飙车。

H. 如何让Android的View在动画时具有运动模糊的镜头效果

float startX,startY;//动画开始前的位置
float x,y;//图片当前坐标
float targetX,targetY;//目标位置
float ration;//动画所需要的时间

float deltaX=targetX-startX;
float deltaY=targetY-startY;

onDraw(Canvas canvas,float deltaTime){
x=startX+deltaX*deltaTime/ration;
y=startY+deltaY*deltaTime/ration;
canvas.draw(bmp,x,y,null);
}

I. 在android,怎么实现activity模糊图层效果呢

Android里面:
最普遍的模糊技术是这样做的:从TextView的后一层背景中截取一部分;进行模糊处理;把模糊处理后的部分设置为TextView的背景。
实现activity模糊图层效果是RenderScript是Android在API 11之后加入的,用于高效的图片处理,包括模糊、混合、矩阵卷积计算等,通过一种fastblur模糊图片算法来计算一张图片像素,进而更改图片的分辨率和模糊程度。算法代码可以参考这篇csdn博客介绍几种模糊算法,地址如下:http://blog.csdn.net/xu_fu/article/details/23131241。

几种算法实现的效果都差不多,但是效果和时间上还是有很大区别,这取决于你的Android实际的运行环境,如果机器是Android API 2.0以下的,就不能使用RenderScript类,只能使用硬编码方式,这就涉及到OPENGL的知识了,OPENGL就是对图像进行各种处理的一门知识,这些知识都可以到网上找得到。我在csdn上次了一个Android图片模糊处理的一个小demo,欢迎下载:链接如下:http://download.csdn.net/detail/omayyouhappy/8888251

J. 如何实现Android 布局背景模糊化处理

在模仿 IOS 密码输入页面的时候发现其背景有模糊处理,于是了解了一下并记录下来,以便使用.在Android 中具体实现方法如下

查考 http://www.cnblogs.com/lipeil/p/3997992.html

Java代码
private void applyBlur() {

// 获取壁纸管理器
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this.getContext());
// 获取当前壁纸
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
// 将Drawable,转成Bitmap
Bitmap bmp = ((BitmapDrawable) wallpaperDrawable).getBitmap();

blur(bmp);
}

下面之所以要进行small 和big的处理,是因为仅仅靠ScriptIntrinsicBlur
来处理模式,不能到达更模式的效果,如果需要加深模式效果就需要先把背景图片缩小,在处理完之后再放大.这个可以使用Matrix
来实现,而且这样可以缩短模糊化得时间

Java代码
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg) {
long startMs = System.currentTimeMillis();
float radius = 20;

bkg = small(bkg);
Bitmap bitmap = bkg.(bkg.getConfig(), true);

final RenderScript rs = RenderScript.create(this.getContext());
final Allocation input = Allocation.createFromBitmap(rs, bkg, Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setRadius(radius);
script.setInput(input);
script.forEach(output);
output.To(bitmap);

bitmap = big(bitmap);
setBackground(new BitmapDrawable(getResources(), bitmap));
rs.destroy();
Log.d("zhangle","blur take away:" + (System.currentTimeMillis() - startMs )+ "ms");
}

private static Bitmap big(Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(4f,4f); //长和宽放大缩小的比例
Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
return resizeBmp;
}

private static Bitmap small(Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(0.25f,0.25f); //长和宽放大缩小的比例
Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
return resizeBmp;
}

热点内容
缓存区数据读写原理 发布:2025-05-15 03:39:57 浏览:585
编译器生成的是二进制文件吗 发布:2025-05-15 03:38:42 浏览:955
运营为什么区分ios和安卓 发布:2025-05-15 03:30:02 浏览:630
主播网站源码 发布:2025-05-15 02:50:56 浏览:168
中文编程语言有哪些 发布:2025-05-15 02:48:59 浏览:536
配置中心应急流程有哪些 发布:2025-05-15 02:37:31 浏览:670
php宏定义 发布:2025-05-15 02:32:54 浏览:271
咸鱼支付密码哪里改 发布:2025-05-15 02:32:53 浏览:521
存储机箱 发布:2025-05-15 02:31:31 浏览:837
编程很累吗 发布:2025-05-15 02:29:25 浏览:553