IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育


python可以編寫android程序嗎?

分享到:
           

    python可以編寫android程序嗎?答案是肯定的。Android不直接支持使用python開發(fā)應用,需要使用其它中間件或者庫。PythonForAndroid、CLE以及Wrapandroid project這三個組件,可以在android平臺上直接使用python開發(fā)界面應用程序。

    PythonForAndroid提供了在android平臺上對python語言的支持;CLE支持python和java之間的交互,同時提供了一個通用的接口,可用于其它多種語言。Wrapandroid project將android類封裝為CLE對象,從而可以使多種語言可以調(diào)用android類。

    用python編寫android程序,編程和打包環(huán)境可以直接使用eclipse,主要步驟如下:

    1. 準備環(huán)境

    a: 安裝PythonForAndroid: //code.google.com/p/android-scripting

    b: CLE在程序運行的時候,自動從網(wǎng)絡上安裝,也可以下載庫函數(shù),放到工程中。開發(fā)需要java庫文件starcore_android_r6.jar。文件在starcore_devfiles_r6.zip中,可以從//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, 創(chuàng)建一個新的android project “introduction”

    b. 如果要從網(wǎng)絡安裝,則需要添加許可權限:
    < uses-permission android:name="android.permission.INTERNET" />
    < uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">< /uses-permission>

    c. 將庫文件starcore_android_r6.jar和wrapandroid.jar到工程目錄下,將這兩個文件加入到工程中,如下圖:

    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");
        }
    }

    如果不希望從網(wǎng)絡安裝CLE,可以將CLE的共享庫文件包含在工程中,如下:

    同時在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.
    < ?xml version="1.0" encoding="utf-8"?>
    < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/widget73"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        < TextView
            android:id="@+id/widget45"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />
        < Button
            android:id="@+id/widget74"
            android:layout_width="220dp"
            android:layout_height="48dp"
            android:text="thank for your use"
            android:typeface="serif"
            android:textStyle="bold"
            android:textColor="#ffff0000"
            android:layout_x="284dp"
            android:layout_y="220dp"
            android:textSize="16dp"
        />
    < /LinearLayout>

    f. 在assets目錄下,創(chuàng)建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函數(shù)與標準的android函數(shù)有差異,主要是輸入?yún)?shù)中增加了類的名稱;類名稱為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函數(shù)有差異,不需要輸入listener,事件觸發(fā)之后產(chǎn)生給本隊象。

    d. 動態(tài)創(chuàng)建對象
    獲取LinearLayout布局
    MyLinearLayout = StarActivity.findViewById("LinearLayoutClass",StarActivity.getResource("id/widget73"));
    創(chuàng)建一個動態(tài)的按鈕
    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");
    設置按鈕的布局參數(shù)
    MyDynaButton.setLinearLayoutParams(100,50);

    運行結果如下:


   熱點鏈接:

   1、嵌入式Android系統(tǒng)移植
   2、嵌入式Linux串口編程基礎
   3、嵌入式Linux內(nèi)核如何編譯
   4、Android 4.2.2都有哪些改進
   5、三種常見的FPGA結構

更多新聞>> 

主站蜘蛛池模板: 西安测试仪-西安电压测试仪-西安电流测试仪-西安热油汽水测试仪-西安阻抗测试仪-西安时间速度测试仪-西安电力设备厂家-西安中洲电力设备有限公司 | 豪顺物流官网-南京物流公司,南京货运公司「全国专线配送」 | 墨子百科-专业有趣的问题小百科 莫非传媒官网-江西知名的网络营销推广服务平台南昌网络公司,专业网络公关,品牌危机处理,网站SEO优化,微信朋友圈广告,网站建设,南昌莫非文化传媒有限公司 | 沼气池-沼气设备-沼气工程-山东达禹环境工程有限公司 | 宁夏密集型母线槽厂家-封闭式母线槽-电力工程安装-天地经纬电力 宁波允泰仪器有限公司-硬度计、拉力试验机、盐雾试验箱、影像测量仪、气动量仪 | 视觉检测设备_CCD光学筛选机_分度盘光学筛选机-无锡精质智能装备 | 通用变频器|国产变频器|深圳变频器厂家-深圳市英捷思技术有限公司 | 体育馆木地板厂家_篮球木地板价格_舞台木地板品牌-欧氏地板 | 千斤顶-超薄电动千斤顶-电动液压千斤顶-液压螺母扳手-泰州杰克液压机械制造有限公司 | 漳州市鼎新拍卖有限公司 | 珍珠岩_膨胀珍珠岩_玻化微珠-信阳市高新区中凯非金属材料厂 | 筱晓(上海)光子技术有限公司官网,MCT探测器,半导体激光二极管,中红外QCL激光器,光纤放大器,光电探测器 | 现代卓越官网-专注于pmp培训证书-pmp考试报名时间-pmp认证-项目管理pmp-ACP敏捷管理-NPDP认证 | 网站客服系统_在线客服系统【莺语客服】 | 汽车标签|医疗标签|电子标签|手机电池标签|电脑电池标签|电源标签|耐高温标签|防静电标签|手机出厂膜|手机全裹膜|手机包裹膜|手机卖点膜|热转印标签|遮阳板标签|天势科技|-标签印制专家! | 直流电机调速器,直流电机控制器,直流电机调速电源-淄博诚铖创惠电子有限公司 | 专业网站建设_企业品牌营销 · 北京汇仁智杰科技有限公司 | 智能搅拌锅_食品搅拌锅_多功能搅拌锅 - 青岛环速科技有限公司 | 盆底肌修复仪器-产后康复脉冲磁训练仪-南京佳澜健康管理有限公司 | 柚墨yomoer官网_PPT模板_工作总结PPT模板下载_个人简历模板 | 科衣洛定制衣柜,书柜,厨柜,衣帽间,电视柜,酒柜,餐厅柜,门厅柜,鞋柜——科衣洛全屋定制官网 | 免费的动态思维导图软件,脑图大师,思维导图制作软件 - 万彩脑图大师官网 | 陕西散花照明-西安太阳能路灯,陕西太阳能路灯,西安太阳能路灯厂家,陕西太阳能路灯厂家 | 商业地产策划_商业地产代理_华锦亿爵商业地产顾问机构 | 昆明塑料包装袋|云南塑料包装袋|昆明塑料袋厂家|云南茶叶大米蔬菜种子食品包装袋就来阮门包装有限公司 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 惠声电子、广州市惠声电子科技有限公司、VBS、VBS惠声电子、VBS公共广播生产厂家、VBS广播功放生产厂家、VBS会议系统设备批发、VBSIP网络对讲系统厂家、VBS会议系统厂家、VBS智能中控厂家、VBS专业扩声厂家 | 智能调光模块,调光系统巨川电气-专注智能照明 | 上虞大金湖官网|数控外圆磨床|数控内圆磨床|数控无心磨床 | 雨量计,翻斗雨量计,声波雨量计i,时差法流量计,时差法明渠流量计 - 徐州伟思水务科技有限公司 | 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 上海慧泰仪器制造有限公司_一体型马弗炉-可控真空干燥箱-强光稳定性试验箱 | 双单面研磨机_陶瓷平面研磨机_机械密封件研磨机-百诚研磨机械 | 中科联航(江苏)-信息化监理|信息化咨询|信息系统项目管理|信息系统工程监理公司 | 托盘缠绕机|全自动缠绕机|悬臂缠绕机-上海晏陵智能设备有限公司 托辊|滚筒|聚氨酯托辊|缓冲托辊|尼龙托琨|衡水良龙输送机械有限公司 | 康拓威技术(深圳)有限公司|Theia镜头代理商|安讯士AXIS摄像机|安讯士监控系统|博世BOSCH监控|博世会议系统|索尼SONY监控|松下PANASONIC监控|三星韩华SAMSUNG监控|霍尼韦尔Honeywell|海康|大华|华为监控|Theia无畸变镜头|AXIS监控|安讯视摄像机 | 深圳网站建设-量身定制原创设计-专业网站建设公司【企术】 | 菏泽代理公司|菏泽代办公司|菏泽公司注册|公司变更注销 | 无锡大型数控龙门铣,喷涂加工,回火抛丸加工,精密不锈钢焊接机床身机床底座制造加工-无锡美高帝机械有限公司 | 南京企业宣传片制作,广告形象片,影视制作,宣传片拍摄,微电影拍摄制作公司 | 气动法兰软密封蝶阀-电动高温通风蝶阀-气动开关球阀-川沪阀门 |