首页 > 其他分享 >让一张图片从模糊慢慢变清晰动画过程

让一张图片从模糊慢慢变清晰动画过程

时间:2023-06-08 16:38:28浏览次数:57  
标签:动画 SeekBar void 模糊 private radius import android 清晰



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

标签:动画,SeekBar,void,模糊,private,radius,import,android,清晰
From: https://blog.51cto.com/u_5454003/6441225

相关文章

  • 使用ActivityOptions做Activity切换动画
    不知道大家有没有注意到startActivity(Intent,Bundle),那么ActivityOptions就是这个Bundle的原型,负责Activity跳转时的动画。publicvoidonClick(Viewview){Intentintent=newIntent(this,SecondActivity.class);ActivityOptionsoptions=Act......
  • CreateJS 动画 EaselJS 动画
    本节将介绍创建图形动画,精灵表位图动画,DOM元素动画.例子1图形动画<!DOCTYPEhtml><html><head> <metacharset="gbk"> <scripttype="text/javascript"src="easeljs-0.6.0.min.js"></script></head><body> &l......
  • Unity动画系统学习笔记
    title:Unity动画系统学习笔记date:2023-06-07T07:42:12Zlastmod:2023-06-07T11:27:45ZUnity动画系统学习笔记动画系统Unity动画系统动画片段AnimationClip:动画资源,用于展示游戏物体变化动画状态机AnimatorController:控制游戏物体各动画片段播放与切换......
  • VUE+elementUI前端导出解决方案,截断,清晰度,页边距,页眉页脚,富文本都处理了
    pdfLoader.js--------------------------/**@Description:html转pdf新版解决方案*@Author:jeseven/wwl*@Date:2023-05-2310:03:57*@LastEditTime:2023-05-2310:23:22*@LastEditors:jeseven/wwl*/importjsPDFfrom"jspdf";importhtml2canvasfrom&......
  • PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序
    引入问题如果我要写一个Python项目,打包成exe运行(方便在没有Python的电脑上使用),我需要打包出的根目录结构美观,没有多余的、杂乱的依赖文件在那里碍眼,而且需要在发现bug时,我还需要能够修改里面的代码后,无需再次打包,就能正常运行,该怎么做呢?就以一个Hello项目为例,记一下我......
  • 用 Python3 & OpenCV 将视频转成字符动画
    在介绍如何用Python3&OpenCV将视频转成字符动画之前,先简单的介绍一下OpenCV吧,毕竟可能很多小伙伴不太了解:百度百科:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,......
  • 模糊匹配url
    /***字符串模糊匹配*<p>example:*<p>user*user-add--true*<p>user*art-add--false*@parampatt表达式*@paramstr待匹配的字符串*@return是否可以匹配*/publicstaticbooleanvagueMatch(St......
  • css实现点击按钮进行右移的动画
    html页面:<divv-if="hideTip"id="tipsButton">   <el-tooltipclass="item"effect="dark"content="打印表格"placement="top">    <el-buttonicon="el-icon-printer"style=......
  • CSS3动画简介
    http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html[/url]参考:[color=red]CSS3transform旋转属性[/color][url]http://www.w3school.com.cn/cssref/pr_transform.asp[/url][color=red]CSS3transition渐变属性[/color][url]h......
  • jQuery动画插件: Velocity.js
    官方:[url]http://julian.com/research/velocity/[/url]介绍:[url]http://www.w3ctech.com/topic/1403[/url]使用Velocity.js改善用户体验[url]http://www.w3ctrain.com/2015/11/15/faster-ui-animations-with-velocity-js/[/url]使用VELOCITY.JS来改善和......