summaryrefslogtreecommitdiff
path: root/hello.hy
blob: 25e3b2dc7ab73c090d72ca4da80b4dabdc45498d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;; Hello Example
;; =============
;;
;; This is a simple "Hello world!" example, written in Hy.
;;
;; We begin by declaring a unique namespace for the package we are creating.
;; This is typically based on the reversed form of a domain name and should be
;; unique to this package.

(setv __package__ "com.example.hellohy")

;; We also import the classes that will be needed by the application. Since this
;; is a simple example, we only need three of them.

(import [android.app [Activity]])
(import [android.os [Bundle]])
(import [android.widget [TextView]])

;; We define a class based on the standard Activity class. This represents the
;; application, and will be used to present a graphical interface to the user.
;;
;; The initialisation method simply calls the corresponding method in the base
;; class. This must be done even if no other code is included in the method.

(defclass HelloActivity [Activity]
  (defn __init__ [self]
    (.__init__ Activity self))

  ;; The onCreate method is called when the activity is created by Android. The
  ;; return type and parameter types expected by the method are declared using
  ;; the following decorator. Since the parameter types for the onCreate method
  ;; are defined in the Activity base class, this decorator is not strictly
  ;; necessary.
  (with-decorator (args void [Bundle])
    (defn onCreate [self bundle]
      (.onCreate Activity self bundle)
      (setv view (TextView self))
      (.setText view "Hello world!")
      (.setContentView self view)
      (return None))))

;; As with the `__init__` method, we must call the corresponding method in the
;; base class.
;;
;; The user interface for the application is simply a TextView widget that
;; displays a string of text. The final call ensures that the widget is used as
;; the main view for the application.