package com.marshalchen.common.demoofui.sampleModules;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
import com.marshalchen.common.demoofui.R;
import com.marshalchen.common.uimodule.ImageFilter.Distort.BulgeFilter;
import com.marshalchen.common.uimodule.ImageFilter.Distort.RippleFilter;
import com.marshalchen.common.uimodule.ImageFilter.Distort.TwistFilter;
import com.marshalchen.common.uimodule.ImageFilter.Distort.WaveFilter;
import com.marshalchen.common.uimodule.ImageFilter.IImageFilter;
import com.marshalchen.common.uimodule.ImageFilter.Image;
import com.marshalchen.common.uimodule.ImageFilter.*;
import com.marshalchen.common.uimodule.ImageFilter.Textures.*;
public class ImageFilterActivity extends Activity {
private ImageView imageView;
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_filter_activity);
imageView= (ImageView) findViewById(R.id.imgfilter);
textView = (TextView) findViewById(R.id.runtime);
Bitmap bitmap = BitmapFactory.decodeResource(ImageFilterActivity.this.getResources(), R.drawable.image_filter_image);
imageView.setImageBitmap(bitmap);
LoadImageFilter();
}
/**
* ����ͼƬfilter
*/
private void LoadImageFilter() {
Gallery gallery = (Gallery) findViewById(R.id.galleryFilter);
final ImageFilterAdapter filterAdapter = new ImageFilterAdapter(
ImageFilterActivity.this);
gallery.setAdapter(new ImageFilterAdapter(ImageFilterActivity.this));
gallery.setSelection(2);
gallery.setAnimationDuration(3000);
gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
IImageFilter filter = (IImageFilter) filterAdapter.getItem(position);
new processImageTask(ImageFilterActivity.this, filter).execute();
}
});
}
public class processImageTask extends AsyncTask<Void, Void, Bitmap> {
private IImageFilter filter;
private Activity activity = null;
public processImageTask(Activity activity, IImageFilter imageFilter) {
this.filter = imageFilter;
this.activity = activity;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
textView.setVisibility(View.VISIBLE);
}
public Bitmap doInBackground(Void... params) {
Image img = null;
try
{
Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.image_filter_image);
img = new Image(bitmap);
if (filter != null) {
img = filter.process(img);
img.copyPixelsFromBuffer();
}
return img.getImage();
}
catch(Exception e){
if (img != null && img.destImage.isRecycled()) {
img.destImage.recycle();
img.destImage = null;
System.gc();
}
}
finally{
if (img != null && img.image.isRecycled()) {
img.image.recycle();
img.image = null;
System.gc();
}
}
return null;
}
@Override
protected void onPostExecute(Bitmap result) {
if(result != null){
super.onPostExecute(result);
imageView.setImageBitmap(result);
}
textView.setVisibility(View.GONE);
}
}
public class ImageFilterAdapter extends BaseAdapter {
private class FilterInfo {
public int filterID;
public IImageFilter filter;
public FilterInfo(int filterID, IImageFilter filter) {
this.filterID = filterID;
this.filter = filter;
}
}
private Context mContext;
private List<FilterInfo> filterArray = new ArrayList<FilterInfo>();
public ImageFilterAdapter(Context c) {
mContext = c;
//99����
//v0.4
filterArray.add(new FilterInfo(R.drawable.image_filter_video_filter1, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_STAGGERED)));
filterArray.add(new FilterInfo(R.drawable.image_filter_video_filter2, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_TRIPED)));
filterArray.add(new FilterInfo(R.drawable.image_filter_video_filter3, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_3X3)));
filterArray.add(new FilterInfo(R.drawable.image_filter_video_filter4, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_DOTS)));
filterArray.add(new FilterInfo(R.drawable.image_filter_tilereflection_filter1, new TileReflectionFilter(20, 8, 45, (byte)1)));
filterArray.add(new FilterInfo(R.drawable.image_filter_tilereflection_filter2, new TileReflectionFilter(20, 8, 45, (byte)2)));
filterArray.add(new FilterInfo(R.drawable.image_filter_fillpattern_filter, new FillPatternFilter(ImageFilterActivity.this, R.drawable.image_filter_texture1)));
filterArray.add(new FilterInfo(R.drawable.image_filter_fillpattern_filter1, new FillPatternFilter(ImageFilterActivity.this, R.drawable.image_filter_texture2)));
filterArray.add(new FilterInfo(R.drawable.image_filter_mirror_filter1, new MirrorFilter(true)));
filterArray.add(new FilterInfo(R.drawable.image_filter_mirror_filter2, new MirrorFilter(false)));
filterArray.add(new FilterInfo(R.drawable.image_filter_ycb_crlinear_filter, new YCBCrLinearFilter(new YCBCrLinearFilter.Range(-0.3f, 0.3f))));
filterArray.add(new FilterInfo(R.drawable.image_filter_ycb_crlinear_filter2, new YCBCrLinearFilter(new YCBCrLinearFilter.Range(-0.276f, 0.163f), new YCBCrLinearFilter.Range(-0.202f, 0.5f))));
filterArray.add(new FilterInfo(R.drawable.image_filter_texturer_filter, new TexturerFilter(new CloudsTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_texturer_filter1, new TexturerFilter(new LabyrinthTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_texturer_filter2, new TexturerFilter(new MarbleTexture(), 1.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_texturer_filter3, new TexturerFilter(new WoodTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_texturer_filter4, new TexturerFilter(new TextileTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter, new HslModifyFilter(20f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter0, new HslModifyFilter(40f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter1, new HslModifyFilter(60f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter2, new HslModifyFilter(80f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter3, new HslModifyFilter(100f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter4, new HslModifyFilter(150f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter5, new HslModifyFilter(200f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter6, new HslModifyFilter(250f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_hslmodify_filter7, new HslModifyFilter(300f)));
//v0.3
filterArray.add(new FilterInfo(R.drawable.image_filter_zoomblur_filter, new ZoomBlurFilter(30)));
filterArray.add(new FilterInfo(R.drawable.image_filter_threedgrid_filter, new ThreeDGridFilter(16, 100)));
filterArray.add(new FilterInfo(R.drawable.image_filter_colortone_filter, new ColorToneFilter(Color.rgb(33, 168, 254), 192)));
filterArray.add(new FilterInfo(R.drawable.image_filter_colortone_filter2, new ColorToneFilter(0x00FF00, 192)));//green
filterArray.add(new FilterInfo(R.drawable.image_filter_colortone_filter3, new ColorToneFilter(0xFF0000, 192)));//blue
filterArray.add(new FilterInfo(R.drawable.image_filter_colortone_filter4, new ColorToneFilter(0x00FFFF, 192)));//yellow
filterArray.add(new FilterInfo(R.drawable.image_filter_softglow_filter, new SoftGlowFilter(10, 0.1f, 0.1f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_tilereflection_filter, new TileReflectionFilter(20, 8)));
filterArray.add(new FilterInfo(R.drawable.image_filter_blind_filter1, new BlindFilter(true, 96, 100, 0xffffff)));
filterArray.add(new FilterInfo(R.drawable.image_filter_blind_filter2, new BlindFilter(false, 96, 100, 0x000000)));
filterArray.add(new FilterInfo(R.drawable.image_filter_raiseframe_filter, new RaiseFrameFilter(20)));
filterArray.add(new FilterInfo(R.drawable.image_filter_shift_filter, new ShiftFilter(10)));
filterArray.add(new FilterInfo(R.drawable.image_filter_wave_filter, new WaveFilter(25, 10)));
filterArray.add(new FilterInfo(R.drawable.image_filter_bulge_filter, new BulgeFilter(-97)));
filterArray.add(new FilterInfo(R.drawable.image_filter_twist_filter, new TwistFilter(27, 106)));
filterArray.add(new FilterInfo(R.drawable.image_filter_ripple_filter, new RippleFilter(38, 15, true)));
filterArray.add(new FilterInfo(R.drawable.image_filter_illusion_filter, new IllusionFilter(3)));
filterArray.add(new FilterInfo(R.drawable.image_filter_supernova_filter, new SupernovaFilter(0x00FFFF,20,100)));
filterArray.add(new FilterInfo(R.drawable.image_filter_lensflare_filter, new LensFlareFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_posterize_filter, new PosterizeFilter(2)));
filterArray.add(new FilterInfo(R.drawable.image_filter_gamma_filter, new GammaFilter(50)));
filterArray.add(new FilterInfo(R.drawable.image_filter_sharp_filter, new SharpFilter()));
//v0.2
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new ComicFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new SceneFilter(5f, Gradient.Scene())));//green
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new SceneFilter(5f, Gradient.Scene1())));//purple
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new SceneFilter(5f, Gradient.Scene2())));//blue
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new SceneFilter(5f, Gradient.Scene3())));
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new FilmFilter(80f)));
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new FocusFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new CleanGlassFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new PaintBorderFilter(0x00FF00)));//green
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new PaintBorderFilter(0x00FFFF)));//yellow
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new PaintBorderFilter(0xFF0000)));//blue
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new LomoFilter()));
//v0.1
filterArray.add(new FilterInfo(R.drawable.image_filter_invert_filter, new InvertFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_blackwhite_filter, new BlackWhiteFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_edge_filter, new EdgeFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_pixelate_filter, new PixelateFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_neon_filter, new NeonFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_bigbrother_filter, new BigBrotherFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_monitor_filter, new MonitorFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_relief_filter, new ReliefFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_brightcontrast_filter,new BrightContrastFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_saturationmodity_filter, new SaturationModifyFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_threshold_filter, new ThresholdFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_noisefilter, new NoiseFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_banner_filter1, new BannerFilter(10, true)));
filterArray.add(new FilterInfo(R.drawable.image_filter_banner_filter2, new BannerFilter(10, false)));
filterArray.add(new FilterInfo(R.drawable.image_filter_rectmatrix_filter, new RectMatrixFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_blockprint_filter, new BlockPrintFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_brick_filter, new BrickFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_gaussianblur_filter, new GaussianBlurFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_light_filter, new LightFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_mosaic_filter,new MistFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_mosaic_filter,new MosaicFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_oilpaint_filter, new OilPaintFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_radialdistortion_filter,new RadialDistortionFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_reflection1_filter,new ReflectionFilter(true)));
filterArray.add(new FilterInfo(R.drawable.image_filter_reflection2_filter,new ReflectionFilter(false)));
filterArray.add(new FilterInfo(R.drawable.image_filter_saturationmodify_filter, new SaturationModifyFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_smashcolor_filter,new SmashColorFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_tint_filter, new TintFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_vignette_filter, new VignetteFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_autoadjust_filter,new AutoAdjustFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_colorquantize_filter, new ColorQuantizeFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_waterwave_filter, new WaterWaveFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_vintage_filter,new VintageFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_oldphoto_filter,new OldPhotoFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_sepia_filter, new SepiaFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_rainbow_filter,new RainBowFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_feather_filter,new FeatherFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_xradiation_filter,new XRadiationFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_nightvision_filter,new NightVisionFilter()));
filterArray.add(new FilterInfo(R.drawable.image_filter_saturationmodity_filter,null/* �˴������ԭͼЧ�� */));
}
public int getCount() {
return filterArray.size();
}
public Object getItem(int position) {
return position < filterArray.size() ? filterArray.get(position).filter
: null;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Bitmap bmImg = BitmapFactory
.decodeResource(mContext.getResources(),
filterArray.get(position).filterID);
int width = 100;// bmImg.getWidth();
int height = 100;// bmImg.getHeight();
bmImg.recycle();
ImageView imageview = new ImageView(mContext);
imageview.setImageResource(filterArray.get(position).filterID);
imageview.setLayoutParams(new Gallery.LayoutParams(width, height));
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);// ������ʾ��������
return imageview;
}
};
}