Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
408 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
98 changes: 98 additions & 0 deletions
98
app/src/main/java/com/inagata/imageeffects/Adapter/FilterAdapterGPU.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
package com.inagata.imageeffects.Adapter; | ||
|
||
import android.content.Context; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import android.widget.ImageView; | ||
|
||
import com.amulyakhare.textdrawable.TextDrawable; | ||
import com.amulyakhare.textdrawable.util.ColorGenerator; | ||
import com.inagata.imageeffects.R; | ||
import com.inagata.imageeffects.Utilities.FilterType; | ||
|
||
import java.util.LinkedList; | ||
import java.util.List; | ||
|
||
/** | ||
* Created by mnafian on 6/16/15. | ||
*/ | ||
public class FilterAdapterGPU extends RecyclerView.Adapter<FilterAdapterGPU.FilterHolder> { | ||
|
||
private FilterList filterList; | ||
private Context mContext; | ||
|
||
public FilterAdapterGPU(Context mContext) { | ||
super(); | ||
this.mContext = mContext; | ||
populateData(); | ||
} | ||
|
||
public FilterType getItem(int position) { | ||
return filterList.filters.get(position); | ||
} | ||
|
||
private void populateData() { | ||
filterList = new FilterList(); | ||
filterList.addFilter("No Filter", null); | ||
filterList.addFilter("Toon", FilterType.TOON); | ||
filterList.addFilter("Sketch", FilterType.SKETCH); | ||
filterList.addFilter("Vignette", FilterType.VIGNETTE); | ||
filterList.addFilter("Invert", FilterType.INVERT); | ||
filterList.addFilter("Grayscale", FilterType.GRAYSCALE); | ||
} | ||
|
||
@Override | ||
public FilterHolder onCreateViewHolder(ViewGroup parent, int viewType) { | ||
View itemView = LayoutInflater. | ||
from(parent.getContext()). | ||
inflate(R.layout.imf_filter_item, parent, false); | ||
FilterHolder viewHolder = new FilterHolder(itemView); | ||
return viewHolder; | ||
} | ||
|
||
@Override | ||
public void onBindViewHolder(FilterHolder holder, int position) { | ||
String val = filterList.names.get(position); | ||
|
||
ColorGenerator generator = ColorGenerator.MATERIAL; | ||
// generate random color | ||
int color1 = generator.getRandomColor(); | ||
|
||
TextDrawable.IBuilder builder = TextDrawable.builder() | ||
.beginConfig() | ||
.withBorder(2) | ||
.fontSize(23) | ||
.endConfig() | ||
.rect(); | ||
|
||
TextDrawable drawable = builder.build(val.substring(0, Math.min(5, val.length() - 1)), color1); | ||
|
||
holder.imFilter.setImageDrawable(drawable); | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return filterList.names.size(); | ||
} | ||
|
||
public class FilterHolder extends RecyclerView.ViewHolder { | ||
public ImageView imFilter; | ||
|
||
public FilterHolder(View itemView) { | ||
super(itemView); | ||
imFilter = (ImageView) itemView.findViewById(R.id.effectsviewimage_item); | ||
} | ||
} | ||
|
||
private static class FilterList { | ||
public List<String> names = new LinkedList<>(); | ||
public List<FilterType> filters = new LinkedList<FilterType>(); | ||
|
||
public void addFilter(final String name, final FilterType filter) { | ||
names.add(name); | ||
filters.add(filter); | ||
} | ||
} | ||
} |
106 changes: 106 additions & 0 deletions
106
app/src/main/java/com/inagata/imageeffects/Fragment/GpuFilterFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
package com.inagata.imageeffects.Fragment; | ||
|
||
import android.graphics.Bitmap; | ||
import android.graphics.drawable.BitmapDrawable; | ||
import android.os.Bundle; | ||
import android.support.annotation.Nullable; | ||
import android.support.v4.app.Fragment; | ||
import android.support.v4.content.ContextCompat; | ||
import android.support.v7.widget.LinearLayoutManager; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
import com.inagata.imageeffects.Adapter.FilterAdapterGPU; | ||
import com.inagata.imageeffects.R; | ||
import com.inagata.imageeffects.Utilities.FilterType; | ||
import com.inagata.imageeffects.Utilities.RecyclerItemClickListener; | ||
|
||
import jp.co.cyberagent.android.gpuimage.GPUImageColorInvertFilter; | ||
import jp.co.cyberagent.android.gpuimage.GPUImageFilter; | ||
import jp.co.cyberagent.android.gpuimage.GPUImageGrayscaleFilter; | ||
import jp.co.cyberagent.android.gpuimage.GPUImageSketchFilter; | ||
import jp.co.cyberagent.android.gpuimage.GPUImageToonFilter; | ||
import jp.co.cyberagent.android.gpuimage.GPUImageView; | ||
import jp.co.cyberagent.android.gpuimage.GPUImageVignetteFilter; | ||
|
||
/** | ||
* Created by esafirm on 6/15/16. | ||
*/ | ||
public class GpuFilterFragment extends Fragment { | ||
|
||
private RecyclerView recyclerView; | ||
private GPUImageView effectView; | ||
private Bitmap image; | ||
|
||
@Nullable | ||
@Override | ||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | ||
return inflater.inflate(R.layout.imf_gpu, container, false); | ||
} | ||
|
||
@Override | ||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { | ||
super.onViewCreated(view, savedInstanceState); | ||
|
||
effectView = (GPUImageView) view.findViewById(R.id.effectsview); | ||
|
||
LinearLayoutManager linearLayoutManager = | ||
new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); | ||
|
||
recyclerView = (RecyclerView) view.findViewById(R.id.rc_filter); | ||
recyclerView.setHasFixedSize(true); | ||
recyclerView.setLayoutManager(linearLayoutManager); | ||
|
||
final FilterAdapterGPU adapter = new FilterAdapterGPU(getActivity()); | ||
recyclerView.setAdapter(adapter); | ||
|
||
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() { | ||
@Override | ||
public void onItemClick(View view, int position) { | ||
applyEffect(adapter.getItem(position)); | ||
} | ||
})); | ||
} | ||
|
||
@Override | ||
public void onActivityCreated(@Nullable Bundle savedInstanceState) { | ||
super.onActivityCreated(savedInstanceState); | ||
init(); | ||
} | ||
|
||
private void init(){ | ||
image = ((BitmapDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.nabilah)).getBitmap(); | ||
effectView.setImage(image); | ||
} | ||
|
||
private void applyEffect(FilterType filterType) { | ||
if (filterType == null) { | ||
applyEffect(new GPUImageFilter()); | ||
return; | ||
} | ||
|
||
switch (filterType) { | ||
case GRAYSCALE: | ||
applyEffect(new GPUImageGrayscaleFilter()); | ||
break; | ||
case TOON: | ||
applyEffect(new GPUImageToonFilter()); | ||
break; | ||
case VIGNETTE: | ||
applyEffect(new GPUImageVignetteFilter()); | ||
break; | ||
case INVERT: | ||
applyEffect(new GPUImageColorInvertFilter()); | ||
break; | ||
case SKETCH: | ||
applyEffect(new GPUImageSketchFilter()); | ||
break; | ||
} | ||
} | ||
|
||
private void applyEffect(final GPUImageFilter filter) { | ||
effectView.setFilter(filter); | ||
} | ||
} |
116 changes: 116 additions & 0 deletions
116
app/src/main/java/com/inagata/imageeffects/Fragment/LayerDrawableFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
package com.inagata.imageeffects.Fragment; | ||
|
||
import android.content.res.Resources; | ||
import android.graphics.drawable.Drawable; | ||
import android.os.Bundle; | ||
import android.support.v4.app.Fragment; | ||
import android.support.v7.widget.LinearLayoutManager; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import android.widget.ImageView; | ||
|
||
import com.inagata.imageeffects.Adapter.FilterAdapterDrawable; | ||
import com.inagata.imageeffects.R; | ||
import com.inagata.imageeffects.Utilities.RecyclerItemClickListener; | ||
|
||
|
||
public class LayerDrawableFragment extends Fragment { | ||
private ImageView testimage; | ||
private RecyclerView recList; | ||
|
||
@Override | ||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | ||
View view = inflater.inflate(R.layout.imf_layer_drawable, container, false); | ||
testimage = (ImageView) view.findViewById(R.id.testimage); | ||
|
||
LinearLayoutManager layoutManager | ||
= new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); | ||
|
||
recList = (RecyclerView) view.findViewById(R.id.rc_filter); | ||
recList.setHasFixedSize(true); | ||
recList.setLayoutManager(layoutManager); | ||
|
||
FilterAdapterDrawable filterAdapter = new FilterAdapterDrawable(getActivity()); | ||
recList.setAdapter(filterAdapter); | ||
|
||
recList.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() { | ||
@Override | ||
public void onItemClick(View view, int position) { | ||
updateImage(position); | ||
} | ||
})); | ||
|
||
return view; | ||
} | ||
public void updateImage(int position){ | ||
Resources r = getResources(); | ||
Drawable[] layers = new Drawable[2]; | ||
layers[0] = r.getDrawable(R.drawable.nabilah); | ||
switch (position) { | ||
case 0: | ||
layers[1] = r.getDrawable(R.drawable.wall1box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 1: | ||
layers[1] = r.getDrawable(R.drawable.wall2box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 2: | ||
layers[1] = r.getDrawable(R.drawable.wall3box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 3: | ||
layers[1] = r.getDrawable(R.drawable.wall4box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 4: | ||
layers[1] = r.getDrawable(R.drawable.wall5box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 5: | ||
layers[1] = r.getDrawable(R.drawable.wall6box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 6: | ||
layers[1] = r.getDrawable(R.drawable.wall7box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 7: | ||
layers[1] = r.getDrawable(R.drawable.wall8box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 8: | ||
layers[1] = r.getDrawable(R.drawable.wall9box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 9: | ||
layers[1] = r.getDrawable(R.drawable.wall10box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 10: | ||
layers[1] = r.getDrawable(R.drawable.wall11box); | ||
layers[1].setAlpha(90); | ||
break; | ||
|
||
case 11: | ||
layers[1] = r.getDrawable(R.drawable.wall12box); | ||
layers[1].setAlpha(90); | ||
break; | ||
} | ||
android.graphics.drawable.LayerDrawable layerDrawable = new android.graphics.drawable.LayerDrawable(layers); | ||
testimage.setImageDrawable(layerDrawable); | ||
testimage.destroyDrawingCache(); | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
app/src/main/java/com/inagata/imageeffects/Utilities/FilterType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package com.inagata.imageeffects.Utilities; | ||
|
||
public enum FilterType{ | ||
GRAYSCALE, TOON, VIGNETTE, INVERT, SKETCH | ||
} |
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.