参考: https://code.google.com/p/android-scripting/wiki/FullScreenUI
这是一个简单的图片查看小程序 ,只有基本功能: back 选图片 next ,还有一个没能实现的功能:横屏显示。
imageview.py
# -*- coding: utf-8 -*- import android import os,sys reload(sys) sys.setdefaultencoding(‘utf-8‘) droid = android.Android() base_dir = ‘/mnt/sdcard/DCIM/‘ if not os.path.isdir(base_dir): print base_dir,‘is not dir‘ sys.exit(4) def show_dir(path=base_dir): """Shows the contents of a directory in a list view.""" nodes = sorted(os.listdir(path)) # Make a way to go up a level. if path != base_dir: nodes.insert(0, ‘..‘) droid.dialogCreateAlert(os.path.basename(path).title()) droid.dialogSetItems(nodes) droid.dialogShow() # Get the selected file or directory. result = droid.dialogGetResponse().result droid.dialogDismiss() if ‘item‘ not in result: return target = nodes[result[‘item‘]] target_path = os.path.join(path, target) if target == ‘..‘: target_path = os.path.dirname(path) if os.path.isdir(target_path): return show_dir(target_path) elif os.path.splitext(target)[1].lower() in (‘.jpg‘,‘.png‘): return target_path # inform the user. else: droid.makeToast(‘Only .jpg .png files are currently supported!‘) return target_path = None target = ‘‘ path =‘‘ alist =[] def init(): global target_path, target,path,nodes target_path = show_dir() path = os.path.dirname(target_path) alist = imagelist(path) show_image() return def show_image(): global target_path, target,path if target_path is None: return if os.path.exists(target_path): target = os.path.basename(target_path) img = ‘file://‘ + target_path droid.fullSetProperty("imageView","src",img) else: droid.makeToast(‘Error: %s not exists‘,path) return def imagelist(path): global alist nodes = sorted(os.listdir(path)) alist =[] for f in nodes: if os.path.splitext(f)[1].lower() in (‘.jpg‘,‘.png‘): alist.append(f) return def back(): global target_path,target, alist j = None for i in range(0,len(alist)): if alist[i]==target: j=i break if j>0: target = alist[j-1] target_path = os.path.join(path, target) show_image() else: droid.makeToast(‘this is begin image‘) return def next(): global target_path,target, alist j = None len1 = len(alist) for i in range(0,len1): if alist[i]==target: j=i break if j < len1-1: target = alist[j+1] target_path = os.path.join(path, target) show_image() else: droid.makeToast(‘this is end image‘) return def landscape(): droid.makeToast(‘this is landscape function‘) return def eventloop(): while True: event=droid.eventWait().result if event["name"]=="click": id=event["data"]["id"] if id=="image": init() if id=="next": next() if id=="back": back() if id=="landscape": landscape() if id=="Exit": return elif event["name"]=="screen": if event["data"]=="destroy": return layout = """<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/background" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff000000"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/Exit" android:layout_width="60dp" android:layout_height="wrap_content" android:text="退出" /> <Button android:id="@+id/back" android:layout_width="60dp" android:layout_height="wrap_content" android:text="back" /> <Button android:id="@+id/image" android:layout_width="60dp" android:layout_height="wrap_content" android:text="图片" /> <Button android:id="@+id/next" android:layout_width="60dp" android:layout_height="wrap_content" android:text="next" /> <Button android:id="@+id/landscape" android:layout_width="60dp" android:layout_height="wrap_content" android:text="目" /> </LinearLayout> <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> """ droid.fullShow(layout) eventloop() droid.fullDismiss()