正如标题所述,我正在尝试使用像instagram这样的图像过滤器开发应用程序。 我可以使用CPUImage库为照片添加效果,但无法在水平滚动视图中显示图像过滤器选项。
我的想法是创建一堆代表不同过滤效果的演示图片,并将它们列在水平滚动视图中。选择演示图片时,使用CPUImage库添加相应的效果。
问题是:
这是在水平滚动视图中实现图像过滤器的正确或最简单方法吗?
我是否错过了现有的参考资料,教程或图书馆做同样的事情?
感谢任何帮助。谢谢你们。
答案 0 :(得分:0)
花了一些时间来计算我们如何合并水平滚动视图和gpuImageFilter,我能够实现像图像过滤器这样的Instagram。
以下针对具有相同问题的任何人的相关链接和代码共享。
代码
// Set the current effect mode as image border or filter
private void setEffectMode(String mode)
{
// Compute the width of a carousel item based on the screen width and
// number of initial items.
final DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
final int imageWidth = (int) (displayMetrics.widthPixels / INITIAL_ITEMS_COUNT);
TypedArray filterResourcesTypedArray = null;
mCarouselContainer.removeAllViews();
if (mode.equals(borderMode))
{
// Get the array of puppy resources
filterResourcesTypedArray = getResources().obtainTypedArray(R.array.borderArray);
} else if (mode.equals(filterMode))
{
// Get the array of puppy resources
filterResourcesTypedArray = getResources().obtainTypedArray(R.array.filterArray);
}
// Populate the carousel with items
for (int i = 0; i < filterResourcesTypedArray.length(); i++)
{
// Create new ImageView
imageItem = new ImageView(this);
imageItem.setId(i);
imageItem.setTag(mode);
// Set the image view resource
imageItem.setImageResource(filterResourcesTypedArray.getResourceId(i, -1));
// Set the size of the image view to the previously computed value
imageItem.setLayoutParams(new LinearLayout.LayoutParams(imageWidth, imageWidth));
// / Add image view to the carousel container
mCarouselContainer.addView(imageItem);
imageItem.setOnClickListener(this);
}
}
如何创建水平图像滚动视图 http://www.smashingmagazine.com/2013/02/01/android-carousel-design-pattern/