android图片翻转镜像

本文介绍了一种在Android中实现图像垂直镜像显示的方法。通过自定义ImageView,并利用Canvas进行图像翻转绘制,实现了底部镜像的效果。文章提供了完整的代码示例及布局文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源代码:

http://download.csdn.net/detail/zhuimengandyue/5914779

效果图如下:

                    

重点代码:canvas.translate(0, image.getHeight());//垂直移动view的高度
canvas.scale(1f, -1f);//图像垂直翻转

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.ImageView;

public class Jingxiang extends ImageView{
 private ImageView image;
 public Jingxiang(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
 }
 public Jingxiang(Context context) {
  super(context);
  // TODO Auto-generated constructor stub
 }
 public void setImage(ImageView view){
  this.image=view;
 }
 public ImageView getReflectableLayout() {
  return image;
 }
 @Override
 protected void onDraw(Canvas canvas) {
  // TODO Auto-generated method stub
  if(image == null){
   super.onDraw(canvas);
   return;
  }
  
  // reflect & copy
  canvas.translate(0, image.getHeight());//垂直移动view的高度,然后垂直翻转
  canvas.scale(1f, -1f);//图像垂直翻转
  // render
  image.draw(canvas);
  
  super.onDraw(canvas);
 }

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     android:background="@android:color/background_light" >
       <ImageView android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/member"/>
    <com.example.test.Jingxiang
        android:id="@+id/reflect"
         android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_marginTop="1dip"/>

</LinearLayout>

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;

public class PictureActivity extends Activity{
 Jingxiang jx;
@Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.jx);
  setTitle("图像镜像");
  ImageView image=(ImageView) findViewById(R.id.image);
  jx=(Jingxiang) findViewById(R.id.reflect);
  if(image!=null&&jx!=null){
   jx.setImage(image);
  }
 }
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值