当前位置:  编程技术>移动开发
本页文章导读:
    ▪怎么做出一个dialog样式的activity        怎样做出一个dialog样式的activity 达到的效果就像google自带的搜索widiget中,点击录音键弹出的对话框效果一样 除了一个dialog,没有其他的东西,而且背景是半透明的。 在网上搜了一下,android.........
    ▪ 《Objective-C 2.0程序设计》撮要        《Objective-C 2.0程序设计》摘要 1. 命令行下编译 可以使用名为gcc的GNU Objective-C编译器来编译并链接这个程序,gcc命令一般的格式为: gcc -framework Foundation files -o progname 该选项说明你要使用有关.........
    ▪ 图片旋转以及质量有关问题       图片旋转以及质量问题 这里的旋转不讨论图片在imageView中的旋转问题,只是单纯的涉及一个图片bitmap的旋转 或者在一个自定义View中的旋转,虽然旋转很容易实现,但是旋转多次之后图片的.........

[1]怎么做出一个dialog样式的activity
    来源: 互联网  发布时间: 2014-02-18
怎样做出一个dialog样式的activity

达到的效果就像google自带的搜索widiget中,点击录音键弹出的对话框效果一样
除了一个dialog,没有其他的东西,而且背景是半透明的。

在网上搜了一下,android自带theme如下:

•android:theme="@android:style/Theme.Dialog"   将一个Activity显示为对话框模式
•android:theme="@android:style/Theme.NoTitleBar"  不显示应用程序标题栏
•android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  不显示应用程序标题栏,并全屏
•android:theme="Theme.Light"  背景为白色
•android:theme="Theme.Light.NoTitleBar"  白色背景并无标题栏
•android:theme="Theme.Light.NoTitleBar.Fullscreen"  白色背景,无标题栏,全屏
•android:theme="Theme.Black"  背景黑色
•android:theme="Theme.Black.NoTitleBar"  黑色背景并无标题栏
•android:theme="Theme.Black.NoTitleBar.Fullscreen"    黑色背景,无标题栏,全屏
•android:theme="Theme.Wallpaper"  用系统桌面为应用程序背景
•android:theme="Theme.Wallpaper.NoTitleBar"  用系统桌面为应用程序背景,且无标题栏
•android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen"  用系统桌面为应用程序背景,无标题栏,全屏
•android:theme="Translucent"
•android:theme="Theme.Translucent.NoTitleBar"
•android:theme="Theme.Translucent.NoTitleBar.Fullscreen"
•android:theme="Theme.Panel"
•android:theme="Theme.Light.Panel"

其实,只要在manifest.xml文件中把<application>中设置为android:theme = "@android:style/Theme.Dialog"即可,效果如下:


    
[2] 《Objective-C 2.0程序设计》撮要
    来源: 互联网  发布时间: 2014-02-18
《Objective-C 2.0程序设计》摘要
1. 命令行下编译

可以使用名为gcc的GNU Objective-C编译器来编译并链接这个程序,gcc命令一般的格式为:
gcc -framework Foundation files -o progname
该选项说明你要使用有关Foundation框架的信息:
-framework Foundation

2. 语法

Objective-C是区分大小写的

Obj-C采用特定的语法对类和实例应用方法:[ClassOrInstance Method]
在这条语句中,左方括号要紧跟类的名称或该类的实例的名称,它后面可以是一个或者多个空格,空格后面是将要执行的方法。请求一个类或者实例来执行某个操作时,就是在向它发送一条消息。因此也可以表示为:
[receiver message]

 

@interface定义的方法中,开头的负号(-)通知Obj-C编译器,该方法是一个实例方法。其他唯一的选择是正号(+) 。类方法是对类本身执行某些操作的方法。

Apple的运行时系统提供了一个称为垃圾回收的机制,它可自动清理内存。但是,最好要学会如何自己管理内存的使用,而不是依赖于自动的机制。事实上,针对不支持垃圾回收的某些平台,如iphone进行程序设计时,就不能依赖与垃圾回收机制。

使用@property和@synthesize来自动生成设置函数方法和获取函数方法。

关键字self用来指明对象是当前方法的接收者。类似c++的this

@class,使用@class关键字声明一个类,提高了效率,因为编译器不需要处理整个类.h文件;而只需要xxx是个类名字。如果需要引用 xxx类中的方法,@class指令是不够的,因为编译器需要更多的信息。需要知道该方法中有多少参数,它们是什么类型,方法的返回类型是什么。

关键字super,用来引用消息接收者的父类。

@selector(alloc) 为名为alloc的方法声称一个SEL类型的值。要确定对象是否可以响应这个动作,可以使用respondsToSelector。

@try, @catch(NSException), @throw, @finally [exception name] [exception reason]

接口中可以声明@protected(这个指令后面的实例变量可被该类及任何子类中定义的方法直接访问,这是默认的情况); @private (可被定义的类的方法直接访问,但是不能被子类中定义的方法直接访问);@public(可被该类定义的方法直接访问,也可被其他类或模块中定义的方法直 接访问,使得其他方法或函数可以通过使用指针运算符->访问实例变量);@package(对于64位图像,可以在实现该类的图像的任何地方访问这 个实例变量)

3. 继承

有时,创建类只是使创建子类更容易。因此,这些类名为抽象类。例如Foundation的NSNumber类是为了将数字作为对象处理而创建的抽象 类。整数和浮点数字通常有不同的内存需求。每种数字类型都有单独的NSNumber子类。因为这些子类属于NSNumber类,总起来名为簇 (cluster)。向NSNumber类发送消息来创建新的整数对象时,使用合适的子类为整数对象分配必需的空间,并正确的设定其值。这些子类实际上是 私有的。你自己无法直接访问这些子类,只能通过抽象的超类间接访问。

4. Category

分类(Category)提供了一个方式,用它可以将类的定义模块化到相关方法的组或者分类中。它还提供了扩展现有类定义的简便方式,并且不必访问类的源代码,也无需创建子类。

关于分类有几点值得注意,首先,尽管分类可以访问原始类的实例,变量,但是它不能添加自身的任何变量,如果需要添加变量,可以考虑创建子类;另外, 分类可以重载该类中的另一个方法,但是通常认为这种做法是拙劣的设计习惯。其一,重载了一个方法以后,再也不能访问原来的方法。因此,必须小心地将被重载 方法中的所有功能复制到替换方法中。如果确实需要重载方法,正确的选择可能是创建子类。如果在子类中重载方法,仍然可以通过向super发送消息来引用父 类的方法;和一般接口方法不同的是,不必实现分类中的所有方法。这对于程序扩展很有用,因为可以在该分类中声明所有方法,然后在一段时间之后才实现它。

5. Protocol

协议(protocol)是多个类共享的一个方法列表。协议中列出的方法没有相应的实现。如果定义了自己的协议,则不必由自己实际实现它。但是,这 就告诉其他程序员:如果要采用这项协议,则必须实现这些方法。这些方法可以从超类继承;可以在@protocol中使用@optional指令,下面列出 的所有方法的指令都是可选的,之后可以在协议内定义@required指令来列出需要的方法。

可以使用conformsToProtocol方法检查一个对象是否遵循某项协议;定义一项协议时,可以扩展现有协议的定义,所以以下协议定义:
@protocol Drawing3D <Drawing>
说明Drawing3D协议也采用了Drawing协议。因此,任何采用Drawing3D协议的类都必须实现此协议列出的方法

分类也可以采用一项协议,如:@interface Fraction (Stuff) <NSCopying, NSCoding>

非正式协议实际上仅仅是一个名称之下的一组方法。前面描述的@optional指令添加到了Obj-C 2.0语言中,用于取代非正式协议的使用。

6. id类型

id类型是一种通用的对象类型。为什么不把所有的对象都声明为id类型呢?使用静态类型时,编译器尽可能确保变量的用法在程序中始终保持一致。编译 器通过检查来确定应用于对象的方法是由该类定义的或者由该类继承,否则它显示警告信息。静态类型是因为它能更好地在程序编译阶段而不是在运行时指出错误。 使用静态类型的另一个原因是它能够提高程序的可读性。

id类型是通用指针类型:因为通过指针,也就是内存地址来引用对象,所以可以自由地将它们在id变量之间来回赋值。因此返回id类型值的方法只是返 回指向内存中某对象的指针。然后可以将该值赋给任何对象变量。因为无论在哪里,对象总是携带它的isa成员,所以即使将它存储在id类型的通用对象变量 中,也总是可以确定它的类。

7. Cocoa & Cocoa Touch

Application Kit框架包括广泛的类和方法,它们用来开发交互式图形应用程序,使得开发文本/菜单/工具栏/表/文档/剪贴板和窗口之类的过程变得十分简便。在Mac OSX操作系统中,术语cocoa总的来说指的是Foudation框架和AppKit框架。术语Cocoa Touch是指Foudation框架和UIKit框架。

8. 内存管理

自动释放池可以自动释放添加到该池中的对象所使用的内存。向对象发送一条autorelease消息时,就将该对象放到这个池中。释放这个池时,添加到该池的所有对象也会一起释放。

当对象的引用计数达到0时,系统就知道不再需要这个对象,因此系统就会释放它的内存,这是通过向对象发送一条dealloc消息而实现的。

通过向对象发送retainCount消息,可以获得这个对象的引用计数。

如果你的方法中不再需要一个对象,但需要返回它,那么向其发送一条autorelease消息,将它标记为以后释放。消息autorelease并不影响对象的引用计数。因此它允许消息的发送者使用这个对象,然后仍然在以后当自动释放池时,释放这些对象。

如果使用alloc或者copy方法(或使用allocWithZone,copyWithZone或mutableCopy方法)直接创建对象,则由你负责释放它。每次retain对象时,应该release或者autorelease它。

转自: http://web2.0coder.com


    
[3] 图片旋转以及质量有关问题
    来源: 互联网  发布时间: 2014-02-18
图片旋转以及质量问题

这里的旋转不讨论图片在imageView中的旋转问题,只是单纯的涉及一个图片bitmap的旋转 或者在一个自定义View中的旋转,虽然旋转很容易实现,但是旋转多次之后图片的质量却是个问题,有时候的效果是不看入目的,虽然对于我的项目基本上多次旋转还算比较符合原图但是 质量却是有点变,还没有发现毫无变化的,在不同的情况下使用不同的方法也会产生不同的效果,至于原因我也不是很明白,这里呢可以讨论一下:

旋转主要两种方式:

Matrix mt = new Matrix(); 
mt.postRotate(degree); 
Bitmap bitmap = CreateBitmap(src, 0, 0, w, h, mt, true); 
canvs.drawBitmap(bitmap, 0, 0, paint); 

2

canvas.save(); 
canvas.rotate(degree); 
canvas.drawBitmap(bitmap, 0, 0, paint); 
canvas.restore(); 这里的canvas是ondraw里面的

在这两种方法上可以相互揉搓 产生另外一种新的方法也就是canvas本身自己实例话,但是不是在ondraw里使用。如;

Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, config);
Canvas canvas = new Canvas(targetBitmap);
Matrix matrix = new Matrix();
matrix.setRotate(mRotation,source.getWidth()/2,source.getHeight()/2);
canvas.drawBitmap(source, matrix, new Paint());
Matrix matrix = new Matrix();
he和
matrix.setRotate(mRotation,source.getWidth()/2,source.getHeight()/2);
RectF rectF = new RectF(0, 0, source.getWidth(), source.getHeight());
matrix.mapRect(rectF);
Bitmap targetBitmap = Bitmap.createBitmap(rectF.width(), rectF.height(), config);
Canvas canvas = new Canvas(targetBitmap);
canvas.drawBitmap(source, matrix, new Paint());

这两种方法都有一个paint 可以消除锯齿的属性,但是有时效果不理想Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

不过在旋转的时候一定要注意旋转的中心点 一般饶图片中心旋转效果比饶左上角要好

preRotate(turnDegrees, width/2, height/2);

Matrix transform = new Matrix();
    transform.setTranslate(xOfCentre, yOfCentre);
    transform.preRotate(turnDegrees, width/2, height/2);
    canvas.drawBitmap(bitmap, transform, null);

这些方法需要自己在不同的场合去摸索,想保存图片质量出了考虑上述元素外,还应该考虑你得bitmap的出处,如bitmap。compress方法,已经option 当中几个属性的设计,这些因素综合上 自己在实际中进行调试是可以达到理想效果的。如果有更好的方式还请留言


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
建站其它 iis7站长之家
▪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