当前位置:  编程技术>移动开发

Android 倒影算法的实现代码

    来源: 互联网  发布时间:2014-10-17

    本文导语:  代码如下:public class MirrorView extends View { Paint m_paint; int m_nShadowH; Drawable m_dw; Bitmap m_bitmap; //xxxx Matrix mMatrix; int shadowHeight; public MirrorView(Context context, Bitmap bitmap) {  super(context);  m_bitmap = bitmap;  _Init();  // TODO Auto-generated constr...

代码如下:

public class MirrorView extends View {
 Paint m_paint;
 int m_nShadowH;
 Drawable m_dw;
 Bitmap m_bitmap;
 //xxxx
 Matrix mMatrix;
 int shadowHeight;
 public MirrorView(Context context, Bitmap bitmap) {
  super(context);
  m_bitmap = bitmap;
  _Init();
  // TODO Auto-generated constructor stub
 }
 private void _Init() {
  //m_dw = new BitmapDrawable(BitmapFactory.decodeResource(getResources(),  R.drawable.icon));
  m_dw = new BitmapDrawable(m_bitmap);
  m_dw.setBounds(0,0,m_dw.getIntrinsicWidth(),m_dw.getIntrinsicHeight());
  m_nShadowH = m_dw.getIntrinsicHeight()/1;
  m_paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  LinearGradient lg = new LinearGradient(0, 0, 0, m_nShadowH, 0xB0FFFFFF, 0x00000000, Shader.TileMode.CLAMP);
  m_paint.setShader(lg);
  m_paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); 
  //xxxx
  mMatrix = new Matrix();
 }
 @Override
 public void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  int nX = 0;
  int nY = 0;
  _DrawNormalImg(canvas, nX, nY);
  _DrawMirror(canvas, nX, nY);
 }
 private void _DrawNormalImg(Canvas canvas, int nX, int nY) {
  canvas.save(Canvas.MATRIX_SAVE_FLAG);
  canvas.translate(nX, nY);
  m_dw.draw(canvas);
  canvas.restore();
 }
 private void _DrawMirror(Canvas canvas, int nX, int nY) {
  int nW = m_dw.getIntrinsicWidth();
  int nH = m_dw.getIntrinsicHeight();
//  U.dout("nW="+nW+",nH="+nH);
  //xxxx
  shadowHeight=nH/2;
  //xxxx
  float[] src=/tech-mobile-dev/{0,/index.html nH, nW, nH, nW,nH - m_nShadowH, 0, nH - m_nShadowH};
  float[] dst={ 0, nH, nW, nH,nW, shadowHeight, 0, shadowHeight };
  //xxxx
  canvas.save();
  mMatrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1);
  canvas.concat(mMatrix);
  //draw mirror image 
  canvas.save(Canvas.MATRIX_SAVE_FLAG);
  canvas.scale(1.0f, -1.0f);
  canvas.translate(nX, -(nY + nH * 2));
  canvas.clipRect(0, nH, nW, nH - m_nShadowH);
  m_dw.draw(canvas);
  canvas.restore();
  //draw mask 
  canvas.save();
  canvas.translate(nX, nY + nH);
  canvas.drawRect(0, 0, nW, m_nShadowH, m_paint);
  canvas.restore();
  //xxxx
  canvas.restore();
 }
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • android 自定义Android菜单背景的代码
  • android panellistview 圆角实现代码
  • android 简单图片动画播放的实例代码
  • android网络编程之android连接网络的简单示例代码
  • 用ubuntu下载的android源代码不知下到哪去了
  • Android发送短信功能代码
  • Android Bitmap和Drawable相互转换的简单代码
  • android WakeLock使用方法代码实例
  • android自动安装apk代码实例(不使用apk安装器安装)
  • 控制Android LED灯颜色的代码实例
  • android通过bitmap生成新图片关键性代码
  • android 跳转进市场的实现代码
  • Android键盘显示与隐藏代码
  • Android中监听系统网络连接打开或者关闭的实现代码
  • Android 显示和隐藏输入法实现代码
  • Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码
  • Android中Root权限获取的简单代码
  • android downsample降低音频采样频率代码
  • android连接wifi时获取广播地址代码
  • android layout 按比例布局的代码
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3