当前位置:  编程技术>移动开发
本页文章导读:
    ▪屏幕旋转水平和垂直有关问题        屏幕旋转水平和垂直问题 参考文档http://lishuaishuai.iteye.com/blog/1133864不加任何旋转屏幕的处理代码的时候,旋转屏幕将会导致系统把当前activity关闭,重新打开。如果只是简单的界面调整,我.........
    ▪ java算术发动机arity        java算术引擎arity arity-2.1.2.jar. ......
    ▪ SurfaceView的运用例子       SurfaceView的使用例子 转载自: http://blog.csdn.net/hellogv/article/details/5985090效果图:例子:main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android.........

[1]屏幕旋转水平和垂直有关问题
    来源: 互联网  发布时间: 2014-02-18
屏幕旋转水平和垂直问题
参考文档http://lishuaishuai.iteye.com/blog/1133864

不加任何旋转屏幕的处理代码的时候,旋转屏幕将会导致系统把当前activity关闭,重新打开。
如果只是简单的界面调整,我们可以阻止此问题的发生,屏幕旋转而自己调整屏幕的元素重构。
首先我们需要修改AndroidManifest.xml文件:
<activity android:name=".Magazine">
</activity>

修改为:
<activity android:name=".Magazine"
  android:configChanges="orientation|keyboard">
</activity>

这样是让程序能够响应旋转屏幕的事件。
然后重写onConfigurationChanged方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
  // TODO Auto-generated method stub
  super.onConfigurationChanged(newConfig);
  Log.v(" == onConfigurationChanged");
  processLayout();
}


在我们用Android开发过程中,会碰到Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法。
在Android开发中这种情况视可以避免的,我们可以在androidmanifest.xml中的activit元素加入这个属性 android:configChanges="orientation|keyboardHidden" 就能有效避免oncreat方法的重复加载,
androidmanifest.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.demo"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".DemoGPS"
            android:configChanges="orientation|keyboardHidden"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  <uses-library android:name="com.google.android.maps" />
    </application>
    <uses-sdk android:minSdkVersion="7" />
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
 
</manifest>


同时在Activity的Java文件中重载onConfigurationChanged(Configuration newConfig)这个方法,这样就不会在布局切换或窗口切换时重载等方法。代码如下:
 @Override 
    public void onConfigurationChanged(Configuration newConfig)
    { 
        super.onConfigurationChanged(newConfig); 
     if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
     {
//land
     }
     else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
     {
//port
     }
    }

    
[2] java算术发动机arity
    来源: 互联网  发布时间: 2014-02-18
java算术引擎arity
arity-2.1.2.jar.

    
[3] SurfaceView的运用例子
    来源: 互联网  发布时间: 2014-02-18
SurfaceView的使用例子
转载自: http://blog.csdn.net/hellogv/article/details/5985090

效果图:


例子:
main.xml
<?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">  
  
    <LinearLayout android:id="@+id/LinearLayout01"  
        android:layout_width="wrap_content" android:layout_height="wrap_content">  
        <Button android:id="@+id/Button01" android:layout_width="wrap_content"  
            android:layout_height="wrap_content" android:text="简单绘画"></Button>  
        <Button android:id="@+id/Button02" android:layout_width="wrap_content"  
            android:layout_height="wrap_content" android:text="定时器绘画"></Button>  
    </LinearLayout>  
    <SurfaceView android:id="@+id/SurfaceView01"  
        android:layout_width="fill_parent" android:layout_height="fill_parent"></SurfaceView>  
</LinearLayout>



SurfaceviewActivity.java
package com.surface;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;

public class SurfaceviewActivity extends Activity {
	/** Called when the activity is first created. */  
    Button btnSimpleDraw, btnTimerDraw;  
    SurfaceView sfv;  
    SurfaceHolder sfh;  
  
    private Timer mTimer;  
    private MyTimerTask mTimerTask;  
    int Y_axis[],//保存正弦波的Y轴上的点  
    centerY,//中心线  
    oldX,oldY,//上一个XY点   
    currentX;//当前绘制到的X轴上的点  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
  
        btnSimpleDraw = (Button) this.findViewById(R.id.Button01);  
        btnTimerDraw = (Button) this.findViewById(R.id.Button02);  
        btnSimpleDraw.setOnClickListener(new ClickEvent());  
        btnTimerDraw.setOnClickListener(new ClickEvent());  
        sfv = (SurfaceView) this.findViewById(R.id.SurfaceView01);  
        sfh = sfv.getHolder();  
  
        //动态绘制正弦波的定时器  
        mTimer = new Timer();  
        mTimerTask = new MyTimerTask();  
  
        // 初始化y轴数据  
        centerY = (getWindowManager().getDefaultDisplay().getHeight() - sfv  
                .getTop()) / 2;  
        Y_axis = new int[getWindowManager().getDefaultDisplay().getWidth()];  
        for (int i = 1; i < Y_axis.length; i++) {// 计算正弦波  
            Y_axis[i - 1] = centerY  
                    - (int) (100 * Math.sin(i * 2 * Math.PI / 180));  
        }  
    }  
  
    class ClickEvent implements View.OnClickListener {  
  
        @Override  
        public void onClick(View v) {  
  
            if (v == btnSimpleDraw) {  
                SimpleDraw(Y_axis.length-1);//直接绘制正弦波  
              
            } else if (v == btnTimerDraw) {  
                oldY = centerY;  
                mTimer.schedule(mTimerTask, 0, 5);//动态绘制正弦波  
            }  
  
        }  
  
    }  
  
    class MyTimerTask extends TimerTask {  
        @Override  
        public void run() {  
  
            SimpleDraw(currentX);  
            currentX++;//往前进  
            if (currentX == Y_axis.length - 1) {//如果到了终点,则清屏重来  
                ClearDraw();  
                currentX = 0;  
                oldY = centerY;  
            }  
        }  
  
    }  
      
    /* 
     * 绘制指定区域 
     */  
    void SimpleDraw(int length) {  
        if (length == 0)  
            oldX = 0;  
        Canvas canvas = sfh.lockCanvas(new Rect(oldX, 0, oldX + length,  
                getWindowManager().getDefaultDisplay().getHeight()));// 关键:获取画布  
        Log.i("Canvas:",  
                String.valueOf(oldX) + "," + String.valueOf(oldX + length));  
  
        Paint mPaint = new Paint();  
        mPaint.setColor(Color.GREEN);// 画笔为绿色  
        mPaint.setStrokeWidth(2);// 设置画笔粗细  
  
        int y;  
        for (int i = oldX + 1; i < length; i++) {// 绘画正弦波  
            y = Y_axis[i - 1];
            System.out.println("oldX:"+oldX+"    oldY:"+oldY+"   i:"+i+"    y:"+y);
            canvas.drawLine(oldX, oldY, i, y, mPaint);  
            oldX = i;  
            oldY = y;  
        }  
        sfh.unlockCanvasAndPost(canvas);// 解锁画布,提交画好的图像  
    }  
  
    void ClearDraw() {  
        Canvas canvas = sfh.lockCanvas(null);  
        canvas.drawColor(Color.BLACK);// 清除画布  
        sfh.unlockCanvasAndPost(canvas);  
  
    }
}

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
javascript开源软件 iis7站长之家
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3