当前位置:  编程技术>移动开发
本页文章导读:
    ▪这两天iNotes for iPad 2.0下架了        这两天iNotes for iPad 2.0上架了 经过3个多月对用户反馈的聆听,本人开发的iPad应用iNotes for iPad 2.0已经上线。2.0版本的更新让这个笔记软件功能更加全面。 很多功能得到了优化,例如,键盘文.........
    ▪ onTouchEvent跟onInterceptTouchEvent        onTouchEvent和onInterceptTouchEvent 有点儿难以理解,不过可以参考下面的文章。http://blog.csdn.net/ddna/archive/2010/04/11/5473293.aspx ......
    ▪ 创办指南针View的例子(1)       创建指南针View的例子(1) 在接下来的例子里,你将通过扩展View类创建一个指南针View。它使用传统的指南针上升箭头来指示方向。当完成时,应该和图4-3看起来一样。   指南针是一个UI.........

[1]这两天iNotes for iPad 2.0下架了
    来源: 互联网  发布时间: 2014-02-18
这两天iNotes for iPad 2.0上架了

经过3个多月对用户反馈的聆听,本人开发的iPad应用iNotes for iPad 2.0已经上线。2.0版本的更新让这个笔记软件功能更加全面。 很多功能得到了优化,例如,键盘文字输入时,添加了很多学生需要的数学符号输入,bullets和numbers的输入。还有更重要的荧光笔功能。iNotes的输入方式还是集中在键盘输入,我认为手写笔记仅仅是速记的一种手法,但很多缺点无法解决,例如,无法拷贝、粘贴,无法使用系统内置的autocorrection,无法立即进行搜索等。iNotes在iPad的手写输入上,用户体验也得到了改进,例如,新的palm protection选项,让你可以把手腕放到屏幕上来进行手写,而不影响手写的效果。还有"Zoom-to-write“,可以把纸上的细节放大,然后可以写更小的字体。

 

iNotes for iPad另外一个更重要的功能就是用户可以导出笔记到HTML格式,由于PDF的导出文档缺失嵌入字体,基本上所有iPAD导出的PDF文件在PC上打开都会提示使用的字体无法找到。HTML格式解决了这一问题,起码用户能打开文档并对内容进行阅读。

 

iNotes for iPad已经受到了很多不同领域的用户的使用,例如,学生,教师和商业人士。这两天收到了一个email,一位商业人士他的客户用了iNotes for iPad, 并且给他们发了PDF的notes作为商业上交流的文档。这个让我非常惊喜,也非常有信心长期做好这个产品。

 

App Store 链接:

http://itunes.apple.com/lv/app/inotes-for-ipad/id380049827?mt=8

 

产品网址:(还未更新到2.0)

http://inotesapp.com/ 

 


    
[2] onTouchEvent跟onInterceptTouchEvent
    来源: 互联网  发布时间: 2014-02-18
onTouchEvent和onInterceptTouchEvent
有点儿难以理解,不过可以参考下面的文章。

http://blog.csdn.net/ddna/archive/2010/04/11/5473293.aspx

    
[3] 创办指南针View的例子(1)
    来源: 互联网  发布时间: 2014-02-18
创建指南针View的例子(1)

在接下来的例子里,你将通过扩展View类创建一个指南针View。它使用传统的指南针上升箭头来指示方向。当完成时,应该和图4-3看起来一样。

 

指南针是一个UI控件的例子,它需要完全不同的视觉显示,不同于SDK工具箱中的TextView和Button,让我们从无到有使它成为一个出色的控件。

 

在第10章,你将使用这个指南针View和设备内建的重力加速计来显示用户当前的方向。在11章中,你将学习更高级的Canvas绘制技巧来戏剧性地改进它的外观。

  

 

  图4-3

 

1. 创建一个新的指南针工程,包含指南针View和拥有它的Activity。现在创建CompassView类来扩展View。创建构造函数来运行View可以在代码中实例化,或者通过资源layout的膨胀。添加一个新的initCompassView方法来初始化控件,并在每个构造函数中调用它。

 

package com.paad.compass;

 

import android.content.Context;

import android.graphics.*;

import android.graphics.drawable.*;

import android.view.*;

import android.util.AttributeSet;

import android.content.res.Resources;

 

public class CompassView extends View {

public CompassView(Context context) {

super(context);

initCompassView();

}

 

public CompassView(Context context, AttributeSet attrs) {

super(context, attrs);

initCompassView();

}

 

public CompassView(Context context, AttributeSet ats, int defaultStyle) {

super(context, ats, defaultStyle);

initCompassView();

}

 

protected void initCompassView() {

setFocusable(true);

}

}

 

2. 指南针控件应该总是一个圆的方式占据画布允许的尽可能多的空间。重写onMeasure方法来计算最小的边,使用setMeasuredDimension来设置高度和高度值。

 

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

// The compass is a circle that fills as much space as possible.

// Set the measured dimensions by figuring out the shortest boundary,

// height or width.

int measuredWidth = measure(widthMeasureSpec);

int measuredHeight = measure(heightMeasureSpec);

int d = Math.min(measuredWidth, measuredHeight);

setMeasuredDimension(d, d);

}

 

private int measure(int measureSpec) {

int result = 0;

// Decode the measurement specifications.

int specMode = MeasureSpec.getMode(measureSpec);

int specSize = MeasureSpec.getSize(measureSpec);

if (specMode == MeasureSpec.UNSPECIFIED)

{

// Return a default size of 200 if no bounds are specified.

result = 200;

}

else

{

// As you want to fill the available space

// always return the full available bounds.

result = specSize;

}

return result;

}

 

3. 创建两个你将在绘制指南针时用到的资源文件:颜色和字符串。

3.1. 创建文本字符串资源 /res/values/strings.xml.

 

<?xml version=”1.0” encoding=”utf-8”?>

<resources>

<string name=”app_name”>Compass</string>

<string name=”cardinal_north”>N</string>

<string name=”cardinal_east”>E</string>

<string name=”cardinal_south”>S</string>

<string name=”cardinal_west”>W</string>

</resources>

 

3.2. 创建颜色资源 /res/values/colors.xml.

 

<?xml version=”1.0” encoding=”utf-8”?>

<resources>

<color name=”background_color”>#F555</color>

<color name=”marker_color”>#AFFF</color>

<color name=”text_color”>#AFFF</color>

</resources>

 

4. 现在回到CompassView类中。创建一个用来显示方向的属性并为它创建get和set方法。

 

private float bearing;

public void setBearing(float _bearing) {

bearing = _bearing;

}

 

public float getBearing() {

return bearing;

}

 

5. 接下来,返回到initCompassView方法中,获取第3步中创建的资源的引用。以类作用域的方法存储字符串值和由颜色值创建的Paint对象。你将在下一步中用这些对象来绘制指南针。

 

private Paint markerPaint;

private Paint textPaint;

private Paint circlePaint;

private String northString;

private String eastString;

private String southString;

private String westString;

private int textHeight;

 

protected void initCompassView() {

setFocusable(true);

 

circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);

circlePaint.setColor(R.color. background_color);

circlePaint.setStrokeWidth(1);

circlePaint.setStyle(Paint.Style.FILL_AND_STROKE);

 

Resources r = this.getResources();

northString = r.getString(R.string.cardinal_north);

eastString = r.getString(R.string.cardinal_east);

southString = r.getString(R.string.cardinal_south);

westString = r.getString(R.string.cardinal_west);

 

textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

textPaint.setColor(r.getColor(R.color.text_color));

 

textHeight = (int)textPaint.measureText(“yY”);

 

markerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

markerPaint.setColor(r.getColor(R.color.marker_color));

}

 

6. 最后一步就是用第5步中创建的字符串和Paint对象来绘制指南针。接下来的代码片段只给出了有限的提示。你可以在第11章找到更多关于如何在Canvas上绘制和使用高级的Paint效果的细节。

 

6.1. 首先重写onDraw方法。

 

@Override

protected void onDraw(Canvas canvas) {

 

6.2. 找到控件的中心,存储最小边的长度作为指南针的半径。

 

int px = getMeasuredWidth() / 2;

int py = getMeasuredHeight() /2 ;

int radius = Math.min(px, py);

 

6.3.  使用drawCircle方法绘制外边框,背景的颜色使用第5步中创建的circlePaint对象。

 

// Draw the background

canvas.drawCircle(px, py, radius, circlePaint);

 

6.4. 指南针通过旋转面板来显示当前的指向,所以当前的方向总是在设备的顶端。为了达到这个效果,沿着当前指向的相反方向来旋转画布。

 

// Rotate our perspective so that the ‘top’ is

// facing the current bearing.

canvas.save();

canvas.rotate(-bearing, px, py);

 

6.5. 现在剩下来的就是绘制表盘。旋转画布一周,每隔15°绘制一个标记,每隔45°绘制一个方向字符串。

 

int textWidth = (int)textPaint.measureText(“W”);

int cardinalX = px-textWidth/2;

int cardinalY = py-radius+textHeight;

 

// Draw the marker every 15 degrees and text every 45.

for (int i = 0; i < 24; i++)

{

// Draw a marker.

canvas.drawLine(px, py-radius, px, py-radius+10, markerPaint);

canvas.save();

canvas.translate(0, textHeight);

 

// Draw the cardinal points

if (i % 6 == 0)

{

String dirString = “”;

switch (i)

{

case(0) :

{

dirString = northString;

int arrowY = 2*textHeight;

canvas.drawLine(px, arrowY, px-5, 3*textHeight, markerPaint);

canvas.drawLine(px, arrowY, px+5, 3*textHeight, markerPaint);

break;

}

case(6) : dirString = eastString; break;

case(12) : dirString = southString; break;

case(18) : dirString = westString; break;

}

canvas.drawText(dirString, cardinalX, cardinalY, textPaint);

}

else if (i % 3 == 0)

{

// Draw the text every alternate 45deg

String angle = String.valueOf(i*15);

float angleTextWidth = textPaint.measureText(angle);

int angleTextX = (int)(px-angleTextWidth/2);

int angleTextY = py-radius+textHeight;

canvas.drawText(angle, angleTextX, angleTextY, textPaint);

}

canvas.restore();

canvas.rotate(15, px, py);

}

canvas.restore();

 


    
最新技术文章:
▪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中实现为TextView添加多个可点击的文本 iis7站长之家
 


站内导航:


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

©2012-2021,