button_demo_v2/
button_demo_v2.rs1use termux_gui::{Activity, Result};
6use termux_gui::connection::read_message;
7
8fn main() -> Result<()> {
9 println!("=== Button 交互演示 (新库版本) ===\n");
10
11 let mut activity = Activity::new(true)?;
13 println!("✓ 连接建立\n");
14
15 let layout = activity.create_linear_layout(None)?;
17
18 let title = activity.create_text_view("计数器演示 🦀", Some(layout.id()))?;
20 title.set_text_size(&mut activity, 30)?;
21 title.view().set_margin(&mut activity, 10)?;
22 title.view().set_height_wrap_content(&mut activity)?;
24 title.view().set_linear_layout_params(&mut activity, 0, None)?;
26
27 let counter = activity.create_text_view("点击次数: 0", Some(layout.id()))?;
29 counter.set_text_size(&mut activity, 24)?;
30 counter.view().set_margin(&mut activity, 20)?;
31 counter.view().set_height_wrap_content(&mut activity)?;
33 counter.view().set_linear_layout_params(&mut activity, 1, None)?;
35
36 let button_layout = activity.create_linear_layout_horizontal(Some(layout.id()))?;
38 button_layout.view().set_height_wrap_content(&mut activity)?;
40 button_layout.view().set_linear_layout_params(&mut activity, 0, None)?;
41
42 let inc_button = activity.create_button("➕ 增加", Some(button_layout.id()))?;
44 inc_button.view().set_linear_layout_params(&mut activity, 1, None)?; let dec_button = activity.create_button("➖ 减少", Some(button_layout.id()))?;
47 dec_button.view().set_linear_layout_params(&mut activity, 1, None)?; let reset_button = activity.create_button("🔄 重置", Some(layout.id()))?;
50 reset_button.view().set_height_wrap_content(&mut activity)?;
51 reset_button.view().set_linear_layout_params(&mut activity, 0, None)?;
52
53 println!("✓ 界面创建完成");
54 println!(" - Counter ID: {}", counter.id());
55 println!(" - Button ID: {}", inc_button.id());
56 println!("━━━━━━━━━━━━━━━━━━━━━━");
57 println!("提示: 点击按钮进行交互");
58 println!("━━━━━━━━━━━━━━━━━━━━━━\n");
59
60 let mut count = 0;
62
63 loop {
64 let event = read_message(activity.event_stream())?;
65 let event_type = event["type"].as_str().unwrap_or("");
66
67 match event_type {
68 "destroy" => {
69 println!("\n✓ Activity 已关闭");
72 println!("✓ 程序结束");
73 return Ok(());
74 },
75 "click" => {
76 let id = event["value"]["id"].as_i64().unwrap_or(-1);
77
78 if id == inc_button.id() {
79 count += 1;
80 println!("➕ count = {}", count);
81 } else if id == dec_button.id() {
82 count -= 1;
83 println!("➖ count = {}", count);
84 } else if id == reset_button.id() {
85 count = 0;
86 println!("🔄 count = {}", count);
87 }
88
89 counter.set_text(&mut activity, &format!("点击次数: {}", count))?;
91
92 let color = if count > 0 {
94 0xFF4CAF50u32 as i32 } else if count < 0 {
96 0xFFF44336u32 as i32 } else {
98 0xFF2196F3u32 as i32 };
100 counter.set_text_color(&mut activity, color)?;
101 },
102 _ => {}
103 }
104 }
105}