当前位置: 编程技术>移动开发
本页文章导读:
▪源码批改中出现的BadTokenException & Dialog的修改和继承 & 2.2源码中分辨率hdpi设置 源码修改中出现的BadTokenException & Dialog的修改和继承 & 2.2源码中分辨率hdpi设置
一般来说修改Dialog界面的颜色、背景之类的元素主要涉及的是资源文件修改,不存在源码修改。.........
▪ 简略的页面登陆和页面跳转 简单的页面登陆和页面跳转
首先做出一个登陆的基本页面在.h文件中写出所用到的接口和方法@interface _1_11LoginViewController : UIViewController {
IBOutlet UITextField *namefield;
IBOutlet UITextField *passwordfield;.........
▪ 保存Bit地图到SD卡 保存Bitmap到SD卡
/**
* 保存图片到SD卡(如果有SD卡的话)
* @param mId
*/
private void saveMerchandiseImgToSD(int mId,String imageName)
{
FileOutputStream fos = null;
Bitmap b = PublicMethod.getMerchandiseImage(mId);
try {
fos = .........
[1]源码批改中出现的BadTokenException & Dialog的修改和继承 & 2.2源码中分辨率hdpi设置
来源: 互联网 发布时间: 2014-02-18
源码修改中出现的BadTokenException & Dialog的修改和继承 & 2.2源码中分辨率hdpi设置
一般来说修改Dialog界面的颜色、背景之类的元素主要涉及的是资源文件修改,不存在源码修改。这里需要提及若是增加或者替换了图片,这里使用make -j2是识别不出来的,为了让其进行最小的编译可以有选择删除下面路径的文件
out\target\common\obj\APP\framework-res_intermediates
以上没有涉及Dialog布局方面的修改,若是修改布局最好重载Dialog并定义自己的Theme,在相应的以下几个文件进行修改:
attrs.xml styles.xml themes.xml public.xml \\为了让外部类识别该主题
这里需要注意的是style用于单个布局xml的单个元素,而theme可以将其作为一个单位用在应用中的所有Activity中。重载了Dialog类后在调用该类时需要注意其调用类的类型:
当调用类继承于WindowManagerPolicy时在Dialog类中的onCreate需要加入以下代码:
Window window = getWindow(); window.requestFeature(Window.FEATURE_NO_TITLE); window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG); window.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
如果调用类是Activity类,则不可以加入该类,否则这两种情况下都会抛出BadTokenException错误(已经通过程序验证,那里如果有错请各位指正O(∩_∩)O~)
最后一点是在直接编译源码时候
out\target\product\generic\system\framework\framework-res.apk
中没有hdpi文件夹,虽然在
out\target\common\obj\APPS\framework-res_intermediates\public_resources.xml
hdpi文件夹的资源都已经被编译出来了,可是未能在system.img中有hdpi的资源,从而导致即便是设置480*800的分辨率其模拟器显示的结构依旧是mdpi的资源,因此需要做以下修改
转载请注明(http://ishelf.iteye.com/blog/809040 )
在文件夹 build\target\product\generic.mk加入 CUSTOM_LOCALES:= hdpi mdpi
[2] 简略的页面登陆和页面跳转
来源: 互联网 发布时间: 2014-02-18
简单的页面登陆和页面跳转
首先做出一个登陆的基本页面
在.h文件中写出所用到的接口和方法
首先关注一下textfield中按钮的控制,
如果想在输入name完成是自动跳转到password的输入则进行以下设置:
选中上面的textfield框,在interface bulider中找到return key属性设置,将其改为next,那么原输入框右下角的Done会变为Next。
这是他的实现方法
而在下面的textfield设置是记将secure选项选中,即当输入密码时会用*代替
下面就是要进行页面跳转的工作了,在file菜单下选择new file选项,再选择UIviewController,顺便选中下面的生成xib文件的选项,点击next,取名successLogin,生成文件后将.xib拖入resources文件夹中,再实现以下代码
这样就可以实现跳转了,但是我们一般对输入内容都有一定的限制,比如内容要大于4位,若小于四位则弹出对话框进行提示
实现下面代码:
这样一个简单的页面就完成了。
首先做出一个登陆的基本页面
在.h文件中写出所用到的接口和方法
@interface _1_11LoginViewController : UIViewController { IBOutlet UITextField *namefield; IBOutlet UITextField *passwordfield; } @property (nonatomic,retain) UITextField *namefield; @property (nonatomic,retain) UITextField *passwordfield; @property (nonatomic,retain) UIButton *allowButton; -(IBAction)login; -(IBAction)namefieldEditing:(id)sender; -(IBAction)changeTextFile; -(IBAction)doneLogin; -(IBAction)allow; @end
首先关注一下textfield中按钮的控制,
如果想在输入name完成是自动跳转到password的输入则进行以下设置:
选中上面的textfield框,在interface bulider中找到return key属性设置,将其改为next,那么原输入框右下角的Done会变为Next。
这是他的实现方法
-(IBAction)changeTextFile { [passwordfield becomeFirstResponder]; }
而在下面的textfield设置是记将secure选项选中,即当输入密码时会用*代替
下面就是要进行页面跳转的工作了,在file菜单下选择new file选项,再选择UIviewController,顺便选中下面的生成xib文件的选项,点击next,取名successLogin,生成文件后将.xib拖入resources文件夹中,再实现以下代码
#import "successLogin.h" -(IBAction)doneLogin{ successLogin *mysuccessLogin = [[successLogin alloc] initWithNibName:@"successLogin" bundle:nil]; [self.view.window addSubview:mysuccessLogin.view]; [mysuccessLogin release]; } }
这样就可以实现跳转了,但是我们一般对输入内容都有一定的限制,比如内容要大于4位,若小于四位则弹出对话框进行提示
实现下面代码:
-(IBAction)login{ if (namefield.text.length<4||passwordfield.text.length<4) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wrong" message:@"They are not long enough" delegate:self cancelButtonTitle:@"I konw" otherButtonTitles:nil]; [alert show]; [alert release]; }else { successLogin *mysuccessLogin = [[successLogin alloc] initWithNibName:@"successLogin" bundle:nil]; [self.view.window addSubview:mysuccessLogin.view]; [mysuccessLogin release]; } }
这样一个简单的页面就完成了。
[3] 保存Bit地图到SD卡
来源: 互联网 发布时间: 2014-02-18
保存Bitmap到SD卡
/** * 保存图片到SD卡(如果有SD卡的话) * @param mId */ private void saveMerchandiseImgToSD(int mId,String imageName) { FileOutputStream fos = null; Bitmap b = PublicMethod.getMerchandiseImage(mId); try { fos = new FileOutputStream("/sdcard/Discount/" + imageName + ".jpg"); if (fos != null) { b.compress(Bitmap.CompressFormat.JPEG, 90, fos); fos.close(); } } catch (Exception e) { e.printStackTrace(); } }
最新技术文章: