设为首页 收藏本站
查看: 667|回复: 0

[经验分享] 用python开发android应用 【转载】

[复制链接]

尚未签到

发表于 2015-4-26 09:58:02 | 显示全部楼层 |阅读模式
  用python开发android应用?【转载】
  转载自:http://www.miui.com/thread-995114-1-1.html

  Python是动态语言,比较简洁。Android不直接支持使用python开发应用,需要使用其它中间件或者库。PythonForAndroid提供了在android平台上对python语言的支持;CLE支持python和java之间的交互,同时提供了一个通用的接口,可用于其它多种语言。Wrapandroid project将android类封装为CLE对象,从而可以使多种语言可以调用android类。使用这三个组件,可以在android平台上直接使用python开发界面应用程序。Wrapandroid项目在进行中,目前的0.8.5版本已经提供了除SQlite,OpenGL之外大部分android类的封装。完全可以编写一个独立的python应用程序。
  
在android上开发python应用程序,编程和打包环境可以直接使用eclipse。
  1. 准备环境
  a: 安装PythonForAndroid:?http://code.google.com/p/android-scripting
b: CLE在程序运行的时候,自动从网络上安装,也可以下载库函数,放到工程中。开发需要java库文件starcore_android_r6.jar。文件在starcore_devfiles_r6.zip中,可以从http://code.google.com/p/cle-for-android下载
c: Wrapandroid项目库文件wrapandroid.jar,包含在压缩包http:/code.google.com/p/wrapandroid-for-multilaguage/download/wrapandroid_devfiles_0_8_6.rar中。
  2. 开始编程
  a. 打开eclipse, 创建一个新的android project "introduction"
b. 如果要从网络安装,则需要添加许可权限:?
? ?
? ?
c. 将库文件starcore_android_r6.jar和wrapandroid.jar到工程目录下,将这两个文件加入到工程中,如下图:
DSC0000.jpg
  d. 编辑 IntroductionActivity.java,如下修改,加载python代码
  import com.srplab.wrapandroid.*;
public class IntroductionActivity extends WrapAndroidActivity {
? ? /** Called when the activity is first created. */
? ? @Override
? ? public void onCreate(Bundle savedInstanceState) {
? ?? ???super.onCreate(savedInstanceState);
? ?? ???setContentView(R.layout.main);
? ?? ???StarActivity._Call("DoAssetsFile", "python", "code.py");
? ? }
}
  如果不希望从网络安装CLE,可以将CLE的共享库文件包含在工程中,如下:
DSC0001.jpg
  
  同时在activity中设置下载标志为false
  public class IntroductionActivity extends WrapAndroidActivity {
? ? /** Called when the activity is first created. */
? ? @Override
? ? public void onCreate(Bundle savedInstanceState) {
? ???DownloadFromNetFlag = false;
? ?? ???super.onCreate(savedInstanceState);
? ?? ???setContentView(R.layout.main);
? ?? ???StarActivity._Call("DoAssetsFile", "python", "code.py");
? ? }
}
  只不过此时生成的安装包大一些。
  e. 编辑layout:main.xml.
  

? ? ?
? ? ? ?? ???

  f. 在assets目录下,创建code.py文件.
  3. code.py代码如下
  a. 获取当前服务
  
SrvGroup = libstarpy._GetSrvGroup()
Service = SrvGroup._GetService("","")
  b. 获取当前的Activity
  
StarActivity = Service.ActivityClass.getCurrent();
  c. 获取layout中定义的对象
  
MyText = StarActivity.findViewById("TextViewClass",StarActivity.getResource("id/widget45"));
findViewById函数与标准的android函数有差异,主要是输入参数中增加了类的名称;类名称为android类名称,加上"Class"后缀。
MyText.setText("from layout");
MyButton = StarActivity.findViewById("ButtonClass",StarActivity.getResource("id/widget74"));
定义button对象的点击事件
def MyButton_onClick(self, Ev) :
? ? Service.ToastClass._New().makeText("Button is click", 0).show();
MyButton.onClick = MyButton_onClick;? ??
MyButton.setOnClickListener();
setOnClickListener与android函数有差异,不需要输入listener,事件触发之后产生给本队象。
  d. 动态创建对象
  
  获取LinearLayout布局
MyLinearLayout = StarActivity.findViewById("LinearLayoutClass",StarActivity.getResource("id/widget73"));
创建一个动态的按钮
MyDynaButton = Service.ButtonClass._New(MyLinearLayout);
def MyDynaButton_onClick(self, Ev) :
? ? Service.ToastClass._New().makeText("Button is click", 0).show();
MyDynaButton.onClick = MyDynaButton_onClick;
MyDynaButton.setOnClickListener();
MyDynaButton.setText("created dynamically");
设置按钮的布局参数
MyDynaButton.setLinearLayoutParams(100,50);

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60786-1-1.html 上篇帖子: Python Tutorial(七):输入和输出 下篇帖子: python中的自定义module
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表