当前位置:  网络技术 iis7站长之家
本页文章导读:
    ▪如若定制使用特定sdk的emulator        如果定制使用特定sdk的emulator 提出这个问题,主要是因为当使用avd创建emulator时,当把大屏模拟器(如WVGA800)density从240调低时,对于很多未做兼容性处理的程序,包括android系统某些自带程序,屏幕会.........
    ▪ Widget在主屏幕下的显示        Widget在主屏幕上的显示 标记定义Widget的大小,默认布局和创建Widget实例时的启动行为配置,为了让Widget在主屏幕上更好地显示,Widget必须保持一定的大小,主屏幕分为特定大小的单元格,.........
    ▪ 设立“框”的大小       设置“框”的大小 Activity,Service属于主线程,在主线程中才能更新UI,如toast等。其他线程中不能直接使用,这时可以使用Handler来处理,Handler可以在Activity和Service中。 其实平常一般都.........

[1]如若定制使用特定sdk的emulator
    来源: 互联网  发布时间: 2014-02-18
如果定制使用特定sdk的emulator

提出这个问题,主要是因为当使用avd创建emulator时,当把大屏模拟器(如WVGA800)density从240调低时,对于很多未做兼容性处理的程序,包括android系统某些自带程序,屏幕会出现此种情况:

 

 

更有意思的是,samsung大吹特吹的galaxy tab addon emulator不修改density也存在这个缺陷(它的默认分辨率是1024*600).

 

要根治这个问题,需要修改sdk中core包的内容,对于使用真机做调试的开发人员,这个问题不是问题,在源码中修改sdk后随系统编译到真机即可.而对于使用模拟器测试程序的人来说,无疑是非常头疼的事情,模拟器运行状态时,是不能通过file explorer覆盖core包的,我想到的解决办法是找到模拟器实例在硬盘的存放位置,替换组件后再启动模拟器.

 

找到avd存放模拟器实例的位置:C:\Documents and Settings\Administrator\.android\avd,发现模拟器实例只存放了sdcard.img,cache.img,userdata.img和userdata-qemu.img.由此推测所有的同一版本的模拟器是共用的同一个system.img,于是切到sdk安装目录,把system.img移走,果然原来建好的模拟器已运行不起来,报找不到system.img.

我从公司服务器拖一个system.img过来替换原来的,发现同样跑不起来,看来这个system.img还非解耦合文件.

 

这样,我们就需要保留system.img的其它内容,而只抽换我们修改的core.jar.

接下来需要做的是打开并修改system.img并重新打包system.img,具体方法见:

http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images

 

如果要替换更多的sdk文件,按照上述步骤即可.

 

 


    
[2] Widget在主屏幕下的显示
    来源: 互联网  发布时间: 2014-02-18
Widget在主屏幕上的显示
标记定义Widget的大小,默认布局和创建Widget实例时的启动行为配置,为了让Widget在主屏幕上更好地显示,Widget必须保持一定的大小,主屏幕分为特定大小的单元格,Google提供的基本原则是用你想占用的单元格数量乘以74,再减去2。
例:Widget应该是一个正方形,长和宽都各占两个单元格,因此大小就是74*2-2=146dp.


    
[3] 设立“框”的大小
    来源: 互联网  发布时间: 2014-02-18
设置“框”的大小
Activity,Service属于主线程,在主线程中才能更新UI,如toast等。其他线程中不能直接使用,这时可以使用Handler来处理,Handler可以在Activity和Service中。


     其实平常一般都是使用AsyncTask的,而并非Thread和Handler去更新UI,这里说下它们到底有什么区别,我们平时应该使用哪种。从Android 1.5开始系统将AsyncTask引入到android.os包中,过去在很早1.1和1.0 SDK时其实官方将其命名为UserTask,其内部是JDK 1.5开始新增的concurrent库,做过J2EE的网友可能明白并发库效率和强大性,比Java原始的Thread更灵活和强大,但对于轻量级的使用更为占用系统资源。Thread是Java早期为实现多线程而设计的,比较简单不支持concurrent中很多特性在同步和线程池类中需要自己去实现很多的东西,对于分布式应用来说更需要自己写调度代码,而为了Android UI的刷新Google引入了Handler和Looper机制,它们均基于消息实现,有时可能消息队列阻塞或其他原因无法准确的使用。 

   推荐大家使用AsyncTask代替Thread+Handler的方式,不仅调用上更为简单,经过实测更可靠一些,Google在Browser中大量使用了异步任务作为处理耗时的I/O操作,比如下载文件、读写数据库等等,它们在本质上都离不开消息,但是AsyncTask相比Thread加Handler更为可靠,更易于维护,但AsyncTask缺点也是有的比如一旦线程开启即dobackground方法执行后无法给线程发送消息,仅能通过预先设置好的标记来控制逻辑,当然可以通过线程的挂起等待标志位的改变来通讯,对于某些应用Thread和Handler以及Looper可能更灵活。 
     那么先让我们看看要使用AsyncTask 类首先要做哪些工作? 
      1)  子类化AsyncTask 
      2)  实现AsyncTask中定义的下面一个或几个方法 
         onPreExecute() 开始执行前的准备工作; 
         doInBackground(Params...) 开始执行后台处理,可以调用publishProgress方法来更新实时的任务进度; 
         onProgressUpdate(Progress...)  在publishProgress方法被调用后,UI thread将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。 
         onPostExecute(Result) 执行完成后的操作,传送结果给UI 线程。 

         这4个方法都不能手动调用。而且除了doInBackground(Params...)方法,其余3个方法都是被UI线程所调用的,所以要求: 
        1) AsyncTask的实例必须在UI thread中创建; 
        2) AsyncTask.execute方法必须在UI thread中调用; 
        
    同时要注意:该task只能被执行一次,否则多次调用时将会出现异常。而且是不能手动停止的,这一点要注意,看是否符合你的需求! 

    在使用过程中,发现AsyncTask的构造函数的参数设置需要看明白:AsyncTask<Params, Progress, Result> 
    Params对应doInBackground(Params...)的参数类型。而new AsyncTask().execute(Params... params),就是传进来的Params数据,你可以execute(data)来传送一个数据,或者execute(data1, data2, data3)这样多个数据。 
    Progress对应onProgressUpdate(Progress...)的参数类型; 
    Result对应onPostExecute(Result)的参数类型。 
    当以上的参数类型都不需要指明某个时,则使用Void,注意不是void。 

     说到这里就得多说几句 你看AsyncTask 你就会发现这个类是个泛型类 这个类是这样定义的。 



摘自:http://mypyg.iteye.com/blog/722449
		WindowManager m = getWindowManager();  
		Display d = m.getDefaultDisplay();  //为获取屏幕宽、高  
     
		LayoutParams p = getWindow().getAttributes();  //获取对话框当前的参数值  
		p.height = (int) (d.getHeight() * 0.6);   //高度设置为屏幕的0.6  
		p.width = (int) (d.getWidth() * 0.95);    //宽度设置为屏幕的0.95  
     
		getWindow().setAttributes(p);     //设置生效  


//					
System.exit(0);//service will be killed
//					
android.os.Process.killProcess(android.os.Process.myPid());//>>
//
finish();


android launchmode小结

br /launchmode4种模式:br /
1,standard:br /
如果从A跳到A,intent5次,task里5个activity;br /
2,single Top:br /
如果从A 跳B,再从B跳A,如果此时栈顶为A,则不创建新实例,直接把Intent给A,但如果栈顶不是A,则还要创建A的实例br /
3,singleTaskbr /
如果从A跳B,再从B跳A,无论是否栈顶栈底,只要A在,则将Intent给A,不会创建A的新实例;br /
4,singleInstancebr /
不同于前3种模式,前3种只是在同一个task的,而实例化的策略不同。这种模式下的activity会单独存在一个task下。br /
现成的例子是google地图。比如我有一个应用是导游方面的,其中调用的google地图Activity。那么现在我比如按home(后台
activity
onstop,back是finish)键,然后到应用列表中打开google地图,你会发现显示的就是刚才的地图,实际上是同一个Activity。


摘自:http://www.cnblogs.com/wfh1988/archive/2011/01/28/1947045.html
一个APK启动别一个APK的Activity
1、要被启动的那个Apk的manifest.xml的Activity中:
<activity android:name="MyActivity">
  <intent-filter>
    <action android:name="devdiv.intent.action.MyActivity"/>
    <category android:name="android.intent.category.DEFAULT"/>
   </intent-filter>
<activity>
2、另一个要主动启动的Activity:
  Intent intent = new Intent("devdiv.intent.action.MyActivity") ;
  startActivity(intent);


最近在研究两个界面间的动画,用ViewFlipper倒是可以实现view间手指滑动的切换效果,但是不能实现拖动的效果,貌似重写ViewFlipper也不行,继续研究吧,Express News实现的非常好.到底是用什么方式实现的呢?

google过程中发现这样一个方法,可以非常方便的实现两个activity间的动画,不过遗憾的是只有android2.0版本以上才支持这个方法.记录如下:
Intent intentimage = new Intent();
intentimage.setClass(Now.this, NewsImage.class);
startActivityForResult(intentimage, 250);
overridePendingTransition(R.anim.push_up_in, R.anim.push_up_out);


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