当前位置:  编程技术>移动开发
本页文章导读:
    ▪开发自各儿的第一个MeeGo应用(1)        开发自己的第一个MeeGo应用(1) 本文将指导大家了解并深入MeeGo 开发的学习。   1 搭建开发环境 开发MeeGo 需要的只有一个工具,那就是Qt Creator ,目前最新的版本是2.2.1 ,大家可以在Nokia .........
    ▪ Activity is launching as a new task, so cancelling activity result        Activity is launching as a new task, so cancelling activity result. android在activity中使用startActivityForResult(intent,1) ;发起另外一个acivity时,发现怎么也跳转不到发起请求的activity的onActivityResult方法中,最后在.........
    ▪ 图片的上下移动、旋转及放大缩小       图片的左右移动、旋转及放大缩小 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iamgeid" android:orientation="vertical" android:layout_wid.........

[1]开发自各儿的第一个MeeGo应用(1)
    来源: 互联网  发布时间: 2014-02-18
开发自己的第一个MeeGo应用(1)

本文将指导大家了解并深入MeeGo 开发的学习。

 

1 搭建开发环境

开发MeeGo 需要的只有一个工具,那就是Qt Creator ,目前最新的版本是2.2.1 ,大家可以在Nokia 的官网上免费下载到。

http://qt.nokia.com/downloads

 

建议大家直接下载离线(offline 版本),因为在线版的下载实在很慢,而且经常中断。

下载完后,点击安装,安装非常简单,但是需要注意的是 ,

1 选择Installation Folder 时,点击Custom (图1 ),然后需要手动勾选Experimental 下的Harmattan 选项,以及MeeGo 1.2 Harmattan 和Harmattan Emulator 这个就是MeeGo 的SDK 和模拟器(图2 )。

2 安装目录不能有中文和空格,以及任何特殊字符,所以建议只接安装在某个盘符下的根目录,比如:D:\QtSDk

 

图1

 

图2

 

安装过程比较慢,大约10 分钟左右,安完后打开Qt Creator (图3 )

图3

 

2 第一个MeeGo 应用

在Qt Creator 中点击“文件”- 》“新建文件或工程”,选择Qt Quick 项目下的Harmattan Application (图4 )

图4

 

然后点下一步,选择工程目录时,请选择和Qt SDK 在一个盘符的目录,

比如: 如果你的Qt SDK 在D 盘,那么你的工程目录也必须在D 盘,否则会有编译错误。

然后一直点Next ,直到Finish 。(Qt Creator 默认生成的MeeGo 图标是64

X64 的,实际上需要80X80 的,png 格式的图标会显示在桌面,svg 格式的图标会显示在MeeGo 系统自带的程序管理器列表中,的这点大家做真实项目时,需要注意)

最后一步时,Qt Creator 会弹出一个对话框,询问是否添加包到工程中(图5 ),点击“是”即可

 

图5

 

这样第一个MeeGo 程序框架建立完毕,主工程目录下有很多生成的文件和文件夹,在这里我们需要关注的是

1 资源文件/rec.qrc ,这个文件下记录了整个应用所用到的文件,qml ,js ,图片,音视频等等,都需要在这里注册,否则会出现找不到的情况。

2 其他文件/qml ,大家可以发现这里已经生产好了两个qml 文件,

(1)    main.qml ,这是整个项目的根文件,记录了应用的初始qml ,主题,背景,菜单等一些全局内容。

(2)    MainPage.qml ,这是一个整个应用的第一个Page ,main.qml 已经写明initialPage : mainPage ,Page 是MeeGo 的基础页面单元,类似于Android 的Activtiy 和Web 开发中的html 。页面的跳转使用的是PageStack 这种出入栈的形式。

 

我们先来跑跑这个程序,首先需要打开MeeGo 模拟器(图6 ):在左侧栏中点“项目”,然后再Harmattan 下点“运行”,这时左下角的工具栏会多出一个qemu 模拟器的图标,点击就会打开模拟器

图6

 

等模拟器完全起来,进入MeeGo 桌面,需要大概3 分钟(图7 ),

 

在Qt Creator 点击工具栏的绿色箭头“运行”,程序就会编译,生产一个deb 包,然后上传到模拟器上并运行。这个程序包含一个Menu ,一个Button 和一个Hello Word 的Label 。(图9 ),要退出程序,在屏幕“上左右”三个方向边缘用鼠标向内侧滑动。

注意:MeeGo 的模拟器暂时不支持竖屏显示。

 

 


    
[2] Activity is launching as a new task, so cancelling activity result
    来源: 互联网  发布时间: 2014-02-18
Activity is launching as a new task, so cancelling activity result.

android在activity中使用startActivityForResult(intent,1) ;发起另外一个acivity时,发现怎么也跳转不到发起请求的activity的onActivityResult方法中,最后在控制台仔细检查发现了这样一句话:


W/ActivityManager( 1419): Activity is launching as a new task, so cancelling activity result.


再一查,发现是因为此activity在manifest文件中的属性配置有问题,有下面配置:

android:launchMode="singleTask"


就是此配置导致出现此错误,浪费我大半夜的时间。

配置成android:launchMode="singleInstance"也有此问题,最后都删除掉了。


    
[3] 图片的上下移动、旋转及放大缩小
    来源: 互联网  发布时间: 2014-02-18
图片的左右移动、旋转及放大缩小
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/iamgeid"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <Button android:id="@+id/buttonLeft"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片向左移动"
            />
        <Button android:id="@+id/buttonRight"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片向右移动"
            />
        <Button android:id="@+id/buttonRotationLeft"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片左旋转"
            />
        <Button android:id="@+id/buttonRotationRight"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片右旋转"
            />
        <Button android:id="@+id/buttonNarrow"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片缩小"
            />
        <Button android:id="@+id/buttonEnlarge"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片放大"
            />
</LinearLayout>


package cn.m15.xys;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

public class Image extends Activity {
    ImageView imageView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	imageView = new ImageView(this);
	setContentView(R.layout.image);
	LinearLayout ll = (LinearLayout) findViewById(R.id.iamgeid);
	ll.addView(imageView);
	// 向左移动
	Button botton0 = (Button) findViewById(R.id.buttonLeft);
	botton0.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setPosLeft();
	    }
	});

	// 向右移动
	Button botton1 = (Button) findViewById(R.id.buttonRight);
	botton1.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setPosRight();
	    }
	});
	// 左旋转
	Button botton2 = (Button) findViewById(R.id.buttonRotationLeft);
	botton2.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setRotationLeft();
	    }
	});

	// 右旋转
	Button botton3 = (Button) findViewById(R.id.buttonRotationRight);
	botton3.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setRotationRight();
	    }
	});

	// 缩小
	Button botton4 = (Button) findViewById(R.id.buttonNarrow);
	botton4.setOnClickListener(new OnClickListener() {

	    @Override
	    public void onClick(View arg0) {
		imageView.setNarrow();
	    }
	});

	// 放大
	Button botton5 = (Button) findViewById(R.id.buttonEnlarge);
	botton5.setOnClickListener(new OnClickListener() {

	    @Override
	    public void onClick(View arg0) {
		imageView.setEnlarge();
	    }
	});

	super.onCreate(savedInstanceState);

    }

    class ImageView extends View {
	Paint mPaint = null;
	Bitmap bitMap = null;
	Bitmap bitMapDisplay = null;
	int m_posX = 120;
	int m_posY = 50;
	int m_bitMapWidth = 0;
	int m_bitMapHeight = 0;
	Matrix mMatrix = null;
	float mAngle = 0.0f;
	float mScale = 1f;//1为原图的大小

	public ImageView(Context context) {
	    super(context);
	    mPaint = new Paint();
	    mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
	    bitMap = BitmapFactory.decodeResource(this.getResources(),
		    R.drawable.image);
	    bitMapDisplay = bitMap;
	    mMatrix = new Matrix();
	    // 获取图片宽高
	    m_bitMapWidth = bitMap.getWidth();
	    m_bitMapHeight = bitMap.getHeight();
	}

	// 向左移动
	public void setPosLeft() {
	    m_posX -= 10;
	}

	// 向右移动
	public void setPosRight() {
	    m_posX += 10;
	}

	// 向左旋转
	public void setRotationLeft() {
	    mAngle--;
	    setAngle();
	}

	// 向右旋转
	public void setRotationRight() {
	    mAngle++;
	    setAngle();
	}

	// 缩小图片
	public void setNarrow() {
	    if (mScale > 0.5) {
		mScale -= 0.1;
		setScale();
	    }
	}

	// 放大图片
	public void setEnlarge() {
	    if (mScale < 2) {
		mScale += 0.1;
		setScale();
	    }
	}

	// 设置缩放比例
	public void setAngle() {
	    mMatrix.reset();
	    mMatrix.setRotate(mAngle);
	    bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,
		    m_bitMapHeight, mMatrix, true);
	}

	// 设置旋转比例
	public void setScale() {
	    mMatrix.reset();
	    //float sx X轴缩放 
	    //float sy Y轴缩放
	    mMatrix.postScale(mScale, mScale);
	    bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,
		    m_bitMapHeight, mMatrix, true);
	}

	@Override
	protected void onDraw(Canvas canvas) {
	    super.onDraw(canvas);
	    canvas.drawBitmap(bitMapDisplay, m_posX, m_posY, mPaint);
	    invalidate();
	}
    }
}

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪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