当前位置:  编程技术>移动开发
本页文章导读:
    ▪AChartEngine (1) 事件处理 添加坐标/标签 点击效果        AChartEngine (一) 事件处理 添加坐标/标签 点击效果 由于项目需要,需要对图表中的label设置点击事件,可是google给的包没有实现这功能。看来得靠自己了! 慢慢看源码吧~ 关于AChartEnging的.........
    ▪ app 图标规格参照表        app 图标规格参考表 像我一样记不住iOS应用图标像素尺寸的开发者不在少数,我经常需要查询不同设备上的应用尺寸,为了方便自己、方便大家,我制作了下面的图表供大家参考。 iPhone、iP.........
    ▪ qt210 内核移植,学习札记       qt210 内核移植,学习笔记 config 种选中powver manager 里面的内容修改 一个config vi arch/arm/plat-samsung/Makefile 注释 #obj-$(CONFIG_SAMSUNG_DEV_ADC)  += dev-adc.o增加 MACHINE_START 里面增加一段 fixup 的代码。.........

[1]AChartEngine (1) 事件处理 添加坐标/标签 点击效果
    来源: 互联网  发布时间: 2014-02-18
AChartEngine (一) 事件处理 添加坐标/标签 点击效果

由于项目需要,需要对图表中的label设置点击事件,可是google给的包没有实现这功能。看来得靠自己了!

慢慢看源码吧~

  • 关于AChartEnging的事件,使用这个组件时大致有一下几个设置:
    renderer.setPanEnabled(true, false);//表盘移动

    renderer.setPanEnabled(true, false);//表盘缩放

    renderer.setClickEnabled(true);//是否可点击

    renderer.setSelectableBuffer(20);//点击区域大小

用起来是很方便的,但在源码中实现还是比较复杂的,特别是移动和缩放功能,先暂不讨论。

 

下面是在XYChart中点击某个点,触发事件的使用方法:

 

class ChartViewClick implements View.OnClickListener {

    @Override
    public void onClick(View v) {
      GraphicalView graphicalView = (GraphicalView) v;
     
      //获取当前点击点
      SeriesSelection seriesSelection = graphicalView.getCurrentSeriesAndPoint();
      
      if (seriesSelection == null) {
        return;
      }
      int x = (int) seriesSelection.getXValue();
      Toast.makeText(context, "第几个点" + x, Toast.LENGTH_SHORT).show();
    }
  }

 

  public SeriesSelection getCurrentSeriesAndPoint() {
    return mChart.getSeriesAndPointForScreenCoordinate(new Point(oldX, oldY));
  }

 

 oldx,oldy应该就是触控事件中获取的

 

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
      // save the x and y so they can be used in the click and long press
      // listeners
      oldX = event.getX();
      oldY = event.getY();
    }
    if (mRenderer != null && (mRenderer.isPanEnabled() || mRenderer.isZoomEnabled())) {
      if (mTouchHandler.handleTouch(event)) {
        return true;
      }
    }
    return super.onTouchEvent(event);
  }
 

 

 

 查看源码,发现getCurrentSeriesAndPoint()在抽象类AbstractChart.java中,XYChart重写了:

 

public SeriesSelection getSeriesAndPointForScreenCoordinate(final Point screenPoint) {
    if (clickableAreas != null)
      for (int seriesIndex = clickableAreas.size() - 1; seriesIndex >= 0; seriesIndex--) {
        // series 0 is drawn first. Then series 1 is drawn on top, and series 2
        // on top of that.
        // we want to know what the user clicked on, so traverse them in the
        // order they appear on the screen.
        int pointIndex = 0;
        if (clickableAreas.get(seriesIndex) != null) {
          RectF rectangle;
          for (ClickableArea area : clickableAreas.get(seriesIndex)) {
            rectangle = area.getRect();
            if (rectangle != null && rectangle.contains(screenPoint.getX(), screenPoint.getY())) {
              return new SeriesSelection(seriesIndex, pointIndex, area.getX(), area.getY());
            }
            pointIndex++;
          }
        }
      }
    return super.getSeriesAndPointForScreenCoordinate(screenPoint);
  }

 看来,关键在于clickableAreas的构造了。这在XYChart的onDraw方法中,差不多有100行

 

... 
 clickableAreas = new HashMap<Integer, List<ClickableArea>>();
 
//sLength = series.size();遍历几条线
    for (int i = 0; i < sLength; i++) {
...

    //遍历线中的每个点
    for (Entry<Double, Double> value : range.entrySet()) {
    ...
      values.add(value.getKey());
        values.add(value.getValue());
     //把坐标值转换成屏幕中像素坐标
        if (!isNullValue(yValue)) {
          points.add((float) (left + xPixelsPerUnit[scale] * (xValue - minX[scale])));
          points.add((float) (bottom - yPixelsPerUnit[scale] * (yValue - minY[scale])));
     ...

     //关键的来了,生成点击区域
     ClickableArea[] clickableAreasForSubSeries = clickableAreasForPoints(
                MathHelper.getFloats(points), MathHelper.getDoubles(values), yAxisValue, i,
                startIndex);
     ...
    }
      clickableAreas.put(i, clickableArea); //clickableAreas是一个域,保存所有可点击系列
}
}
 

 

查看上面clickableAreasForPoints方法,发现其实就是在坐标像素点处建一个变长为render.getSelectableBuffer()的矩形。

由此很容易想到:

 

 

  • 在x轴标签处创建相应的可点击矩形,添加到clickableAreas中即可

 

这样解决的方法就有很多了,比较简单的方法就是在y轴最小值下面添加一项。。。。。(由于我的图标不用提供缩放和移动,并且最小值固定为0),只要 vYalues = -5d,添加一项即可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


    
[2] app 图标规格参照表
    来源: 互联网  发布时间: 2014-02-18
app 图标规格参考表

像我一样记不住iOS应用图标像素尺寸的开发者不在少数,我经常需要查询不同设备上的应用尺寸,为了方便自己、方便大家,我制作了下面的图表供大家参考。

iPhone、iPodTouch以及一般通用的应用图标像素尺寸是多少?

iPhone和iPodTouch应用需要一般应用所有的图标像素,你可能会想知道为什么iPhone应用需要iPad应用图标,因为一款iPhone应用也可以在iPad上运行。

相反,iPad应用不能在iPhone上运行,因此iPad应用有专属自己的图标像素。

必需图标:

AppStore图标:1024×1024pixels

iPhone主屏幕图标:57×57、114×114(retina)pixels

iPad主屏幕图标:72×72、144×144(retina)pixels

可选图标:

iPhone、iPadSettings、iPhoneSpotlightsearchresults:29×29、58×58(retina)pixels

iPadSpotlightsearchresults:50×50、100×100(retina)pixels


iPad应用需要什么样的图标。

由于只适用iPad的应用不能再iPhone上运行,因此你不需要那么多图标。

所需图标:

AppStore图标:1024×1024pixels

iPad主屏幕图标:72×72、144×144(retina)pixels

可选图标:

iPadSettings:29×29and58×58(retina)pixels

iPadSpotlightsearchresults:50×50and100×100(retina)pixels

文章原文出处:http://www.cocoachina.com/appstore/top/2012/1105/5031.html


    
[3] qt210 内核移植,学习札记
    来源: 互联网  发布时间: 2014-02-18
qt210 内核移植,学习笔记
config 种选中powver manager 里面的内容
修改 一个config
vi arch/arm/plat-samsung/Makefile
注释 #obj-$(CONFIG_SAMSUNG_DEV_ADC)  += dev-adc.o

增加 MACHINE_START 里面增加一段
fixup 的代码。主要是初始化变量。pm_debug_scratchpad = ram_console_start + ram_console_size;

smdkv210.c 增加了 两个 include 文件,和一个函数

#include <mach/gpio.h>
#include <mach/gpio-herring.h>
s3c_setup_uart_cfg_gpio(unsigned char port)
-------------------------------------------------------
至此能编译成功,并有打印信息。
以上基于samsung android 2.6.35 的内核,只是编译成功,但是开发板上运行是异常的。
















另外发现了一处 samsung 的内核,在 www.kernel.org 官方网站上找到的。
git 地址:git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
使用的分支 是 v3.5-next/cleanup-plat-s5p
这是一个3.4的内核,编译的配置使用s5pv210_defconfig.
make ARCH=arm s5pv210_defconfig
make -j2 uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
能够正常的编译通过,只是修改了 配置文件种串口的端口就可以了,但是启动之后,不能挂载 root ,总是报错,目前不清楚是什么错。但是比以前进步了许多的。

终于差清楚了问题,问题出在了 arch/arm/mach-s5pv210/Makefile.boot 的文件,这个文件种写了两个地址,一个是内核启动地址,一个是uboot参数的写入地址,uboot将参数写如了 30000100 的地址,而默认的地址是20000100,所以读取不到启动参数,只要修改了这个,就可以了,内核的加载地址也放在了30008000的地址,就可以正常读取uboot的参数了,可以正常启动文件系统了。

总结:
不抛弃不放弃,慢慢做,一定能成功的。









在挂载Android ramdisk 时要挂载很多驱动,否则启动不正常。
手下是按照出厂所代的哪个CONFIG ,配置了网络支持,network support ,结果就不再报错Address Family not support 的支持了。
但是出现了MTD 信息不能挂载的错误。主要是Nand 上的文件没有读取出来。现在追查是drivers mtd nand 的配置有错误,都配置了,但是发现少了一些选项,追查文件,是没有添加PCI 的支持,也就是在arch/arm/Kconfig 种的文件 没其作用,这个文件种配置了 CONFIG PCI ,但是到了drivers/mtd/nand/Kconfig 却没有解析到PCI 这个东西,导致一些配置不其作用。明天继续追查如何让CONFIG PCI 起作用。


经过验证,和CONFIG_PCI 没有什么关系,不用关心它







添加Nand驱动的支持,不是个简单的事情。
移植Nand 的驱动,首先要移植 drivers/mtd/nand/下面的文件,也就是platform-driver ,其次还要添加platform_device ,也就是生命结构体,而且结构提声明种的name 应该完全一样,否则不能启动。
具体的可以参照:http://blog.csdn.net/f22jay/article/details/7856598
写的很详细,而且是针对S5PV210的,用途很大。
现在遇到的问题是nand 的时钟不对。

解决了Clock的问题了。
虽然不清楚原理,但是其实质就是在arch/arm/mach-s5pv210/clock.c 的init_clock_off 的数组里面添加Nand的相关选项。注意不要加.dev的相关选项,编译不能通过,只有道行高了,再去结构化他把。
注意:s3c_nand.c 里面clk_get(xxx,"nand"),要和clock.c 文件里面定义的 name 一致,也就是nand
这样,Nand 就能正常启动了,但是yaffs2 解压完成之后。又有了新的BUG
BUG: sleeping function called from invalid context at include/linux/freezer.h
不清楚什么原因,睡觉了






和上次相比,没有太大的进展,只是把 Nand 的驱动,移植到了 3.0.8 上面,能够正常启动,也能运行系统,但是 系统一启动就要输入密码,不清楚什么情况。
明天移植LCD 的驱动,不能启动Android ,也可以启动个别的系统玩




LCD 驱动没有移植成功,主要原因是一开是没有弄明白 framebuffer 和LCD 驱动之间的关系,framebuffer 是一个中间层,介于软件和硬件之间。
LCD 的驱动就是GPU 的驱动,它在 drivers/gpu/pvr 目录下,这个是qt210 所用的GPU 驱动,直接复制了过来,没有太大的移植难度。主要是参数配置有问题,导致了fb_size 太小,系统就不能启动了,中断了,估计把这个移植完成,就可以正常启动系统了。



参数调整之后,缓存分配不了,系统不能启动,DMA 的大小为14M ,但是framebuffer 就用掉了10M 左右,而且系统启动不起来,移植的内存分配错误




LCD 驱动移植,无限吐血中。。。。。。强烈怀疑Linux 这帮人怎么整的架构。

    
最新技术文章:
▪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