用Android写一个放Windows 7图片预览窗格效果
时间: 2024-02-03 09:15:39 浏览: 25
实现Windows 7图片预览窗格效果的关键是要使用Android的SurfaceView来实现图片的绘制和缩放等操作。下面是一个基本的实现代码,你可以根据自己的需要进行修改和优化:
1. 创建一个Activity,并设置布局文件:
```java
public class PreviewActivity extends Activity {
private ImageView imageView;
private SurfaceView surfaceView;
private Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.preview_layout);
imageView = (ImageView) findViewById(R.id.imageView);
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
Intent intent = getIntent();
Uri uri = intent.getData();
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
imageView.setImageBitmap(bitmap);
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
drawBitmap(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
private void drawBitmap(SurfaceHolder holder) {
Canvas canvas = holder.lockCanvas();
if (canvas != null) {
canvas.drawBitmap(bitmap, null, new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), null);
holder.unlockCanvasAndPost(canvas);
}
}
}
```
2. 在布局文件中添加ImageView和SurfaceView:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter" />
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible" />
</RelativeLayout>
```
3. 在AndroidManifest.xml中添加权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
4. 启动Activity并传入图片Uri:
```java
Intent intent = new Intent(this, PreviewActivity.class);
intent.setData(uri);
startActivity(intent);
```
5. 运行程序即可看到图片预览窗格效果。
注意:在实际使用中,你可能需要添加更多的功能,如手势缩放、旋转等。这需要你对Android的图形绘制和触摸事件处理有一定的了解。