让一张图片从模糊慢慢变清晰动画过程
2017-04-10 18:54
176 查看
import java.io.IOException; import java.io.InputStream; import android.app.Activity; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.widget.ImageView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import com.enrique.stackblur.StackBlurManager; public class MainActivity extends Activity { private ImageView iv; private SeekBar seekBar; private StackBlurManager stackBlurManager; private String IMAGE_TO_ANALYZE = "android_platform_256.png"; private int blurMode=0; private int radius=30; private int step=2; Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub radius -= step; if (radius < 0) { handler.removeCallbacks(runnable); return; } onBlur(radius); handler.postDelayed(this, 30); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv=(ImageView)findViewById(R.id.imageView); seekBar=(SeekBar)findViewById(R.id.blur_amount); stackBlurManager = new StackBlurManager(getBitmapFromAsset(this, "av.png")); onBlur(radius); handler.postDelayed(runnable, 1000); seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int radius = progress; onBlur(radius); } }); } private Bitmap getBitmapFromAsset(Context context, String strName) { AssetManager assetManager = context.getAssets(); InputStream is=null; Bitmap bitmap = null; try { is = assetManager.open(strName); bitmap = BitmapFactory.decodeStream(is); } catch (IOException e) { return null; } return bitmap; } public void setBlurMode(int mode) { this.blurMode = mode; onBlur(radius); } private void onBlur(int radius) { switch(blurMode) { case 0: iv.setImageBitmap( stackBlurManager.process(radius) ); break; case 1: iv.setImageBitmap( stackBlurManager.processNatively(radius) ); break; case 2: iv.setImageBitmap( stackBlurManager.processRenderScript(this, radius) ); break; } } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFF" android:gravity="center_horizontal" android:orientation="vertical" > <SeekBar android:id="@+id/blur_amount" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="50" /> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
https://github.com/qiujuer/ImageBlurring
Medium上采用了的一种新的图片load方式,先显示一张虚化图,再显示完整的图片BlurImageView
http://www.jcodecraeer.com/a/opensource/2015/1112/3681.html
android-stackblur-master.zip (7.9 MB)
下载次数: 227
大小: 136.5 KB
大小: 187.1 KB
查看图片附件
相关文章推荐
- 图片在下载过程中由模糊逐渐变清晰的技巧
- 图片在下载过程中由模糊逐渐变清晰的技巧
- 类拟google那样的图片载入 由模糊变成清晰
- flash导入图片缩放后出现毛边、失真、锯齿、文字模糊不清晰的情况
- 利用animation-list做每隔几秒显示一张图片的动画效果
- 在webview 上实现图片慢慢放大的动画
- Flash特效:鼠标触发模糊图片变清晰
- 使模糊图片更加清晰
- 【web前端优化之图片模糊到清晰】看我QQ空间如何显示相片
- jquery 图片预加载,先模糊后清晰
- Unity3D中UI图片模糊,不清晰解决怎么解决
- 第二种方法(有原理)让模糊的图片变清晰
- CSS滤镜-图片模糊与清晰
- 【web前端优化之图片模糊到清晰】看我QQ空间如何显示相片
- 图片预加载:jquery 图片预加载功能,可以实现先模糊在清晰的显示
- 类拟google那样的图片载入 由模糊变成清晰
- 网页图片模糊到清晰
- 如何 在adobe reader中 截取 画面 清晰的图片 图表 截图(原来画面不清楚,模糊 最为明显) pdf 。word
- 图片加载-从模糊到清晰
- IOS根据一张图片获取它的模糊效果图片