设为首页 加入收藏

TOP

Android开发:水平方向和垂直方向同时滚动(一)
2014-11-24 11:36:40 来源: 作者: 【 】 浏览:0
Tags:Android 开发 水平 方向 垂直 同时 滚动

2. 修改 Activity 所对应的 Java 代码,使之如下:


package com.pat.gui;



import android.app.Activity;


import android.content.Context;


import android.content.res.Configuration;


import android.content.res.Resources;


import android.graphics.Bitmap;


import android.graphics.BitmapFactory;


import android.graphics.Canvas;


import android.graphics.Paint;


import android.os.Bundle;


import android.util.DisplayMetrics;


import android.view.GestureDetector;


import android.view.MotionEvent;


import android.view.View;


import android.view.ViewGroup;


import android.view.Window;


import android.view.WindowManager;


import android.view.GestureDetector.OnGestureListener;


import android.widget.Toast;



public class ScrollPicture extends Activity


implements


OnGestureListener


{


private int X = 0;


private int Y = 0;



private static int scrollX = 0;


private static int scrollY = 0;



PictureView main;


Bitmap bmp;


Bitmap adapt;


Resources res;


Paint paint;


GestureDetector gestureDetector;


DisplayMetrics dm;



@Override


public void onCreate(Bundle savedInstanceState)


{


super.onCreate(savedInstanceState);


gestureDetector = new GestureDetector(this);


paint = new Paint();


// 获取图像


res = getResources();


bmp = BitmapFactory.decodeResource(res, R.drawable.desktop);


// 获取图像的宽度和高度


X = bmp.getWidth();


Y = bmp.getHeight();



// adapt bmp 显示在屏幕上的那部分图像,见 PictureView 中的 handleScroll 方法


adapt = Bitmap.createBitmap(bmp);


main = new PictureView(this);



// 去掉标题栏


requestWindowFeature(Window.FEATURE_NO_TITLE);


// 全屏显示


this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,


WindowManager.LayoutParams.FLAG_FULLSCREEN);



//setContentView(R.layout.main);


setContentView(main, new ViewGroup.LayoutParams(X, Y));



// landscape 方式显示


this.setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);



// 获取屏幕尺寸


dm = new DisplayMetrics();


getWindowManager().getDefaultDisplay().getMetrics(dm);


}



// 屏幕翻转时,要重新获取 dm 。要使 onConfigurationChanged 可以被触发,必须做到:


// 1. AndroidManifest.xml Activity 标签中,增加属性 android:configChanges="orientation"


// 2. AndroidManifest.xml ,须增加权限:


//


// 当屏幕显示有 landscape 变成 portrait ,或者有 portrait 变成 landscape 是,都会触发 onConfigurationChanged


@Override


public void onConfigurationChanged(Configuration newConfig)


{


if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)


{


// 获取屏幕尺寸


dm = new DisplayMetrics();


getWindowManager().getDefaultDisplay().getMetrics(dm);


// 重新计算 adapt 。显示 desktop.png 的左上角开始,占整个屏幕尺寸大小的那部分


adapt = Bitmap.createBitmap(bmp, 0, 0, dm.widthPixels, dm.heightPixels);


// scrollX scrollY 分别为在水平或者垂直方向上,滚动的像素值


scrollX = 0;


scrollY = 0;


// 重画


main.invalidate();


首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发:程序中动态设定组件.. 下一篇Android开发:ScrollView/Horizon..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)
·MySQL下载与安装教程 (2025-12-26 13:21:26)
·Linux_百度百科 (2025-12-26 12:51:52)
·Shell 流程控制 | 菜 (2025-12-26 12:51:49)