package com.example.demo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Shader.TileMode;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class ImageAdapter extends BaseAdapter {
private ImageView[] mImages; // 保存倒影图片的数组
private Context mContext;
public List<Map<String, Object>> list;
public Integer[] imgs = { R.drawable.image01, R.drawable.image02, R.drawable.image03,
R.drawable.image04, R.drawable.image05, R.drawable.image06};
public String[] titles = { "美图01", "美图02", "美图03", "美图04", "美图05", "美图06"};
public ImageAdapter(Context c) {
this.mContext = c;
list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < imgs.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("image", imgs[i]);
list.add(map);
}
mImages = new ImageView[list.size()];
}
/** 反射倒影 */
public boolean createReflectedImages() {
final int reflectionGap = 4;
final int Height = 200;
int index = 0;
for (Map<String, Object> map : list) {
Integer id = (Integer) map.get("image");
Bitmap originalImage = BitmapFactory.decodeResource(mContext.getResources(), id); // 获取原始图片
int width = originalImage.getWidth();
int height = originalImage.getHeight();
float scale = Height / (float)height;
Matrix sMatrix = new Matrix();
sMatrix.postScale(scale, scale);
Bitmap miniBitmap = Bitmap.createBitmap(originalImage, 0, 0,
originalImage.getWidth(), originalImage.getHeight(), sMatrix, true);
int mwidth = miniBitmap.getWidth();
int mheight = miniBitmap.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1); // 图片矩阵变换(从低部向顶部的倒影)
Bitmap reflectionImage = Bitmap.createBitmap(miniBitmap, 0, mheight/2, mwidth, mheight/2, matrix, false); // 截取原图下半部分
Bitmap bitmapWithReflection = Bitmap.createBitmap(mwidth, (mheight + mheight / 2), Config.ARGB_8888); // 创建倒影图片(高度为原图3/2)
Canvas canvas = new Canvas(bitmapWithReflection); // 绘制倒影图(原图 + 间距 + 倒影)
canvas.drawBitmap(miniBitmap, 0, 0, null); // 绘制原图
Paint paint = new Paint();
canvas.drawRect(0, mheight, mwidth, mheight + reflectionGap, paint); // 绘制原图与倒影的间距
canvas.drawBitmap(reflectionImage, 0, mheight + reflectionGap, null); // 绘制倒影图
paint = new Paint();
LinearGradient shader = new LinearGradient(0, miniBitmap.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
paint.setShader(shader); // 线性渐变效果
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); // 倒影遮罩效果
canvas.drawRect(0, mheight, mwidth, bitmapWithReflection.getHeight() + reflectionGap, paint); // 绘制倒影的阴影效果
ImageView imageView = new ImageView(mContext);
imageView.setImageBitmap(bitmapWithReflection); // 设置倒影图片
imageView.setLayoutParams(new GalleryView.LayoutParams(203,400)
);
imageView
.setScaleType(ScaleType.FIT_XY);
mImages[index++] = imageView;
}
return true;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
return imgs[position%imgs.length];
}
@Override
public long getItemId(int position) {
return position%imgs.length;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//return mImages[position];
return mImages[position
% imgs.length];
// 显示倒影图片(当前获取焦点)
}
public float getScale(boolean focused, int offset) {
return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Grallery3D.zip项目安卓应用源码下载
共40个文件
class:14个
jpg:6个
java:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 120 浏览量
2022-03-09
01:40:34
上传
评论
收藏 1.11MB ZIP 举报
温馨提示
Grallery3D.zip项目安卓应用源码下载Grallery3D.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Grallery3D.zip (40个子文件)
Grallery3D
Grallery3D
Grallery3D
bin
classes.dex 15KB
res
drawable
icon.png 4KB
jarlist.cache 119B
classes
com
example
demo
BuildConfig.class 341B
Main$2.class 1KB
R$layout.class 388B
GalleryView.class 4KB
R$id.class 412B
R$drawable.class 580B
R$attr.class 334B
R.class 517B
Main.class 3KB
Main$1.class 883B
ImageAdapter.class 6KB
R$string.class 421B
Main$3.class 2KB
Main$4.class 1KB
resources.ap_ 386KB
Grallery3D.apk 395KB
AndroidManifest.xml 729B
res
drawable
image04.jpg 30KB
image02.jpg 146KB
image03.jpg 71KB
icon.png 7KB
image05.jpg 19KB
image06.jpg 37KB
image01.jpg 74KB
values
strings.xml 176B
layout
main.xml 819B
gen
com
example
demo
BuildConfig.java 158B
R.java 1KB
proguard.cfg 1KB
.settings
org.eclipse.jdt.core.prefs 598B
src
com
example
demo
GalleryView.java 3KB
ImageAdapter.java 4KB
Main.java 3KB
.project 846B
.classpath 380B
project.properties 361B
AndroidManifest.xml 729B
共 40 条
- 1
资源评论
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功