image_demo_v2/
image_demo_v2.rs1use termux_gui::{Activity, Result};
6use termux_gui::connection::read_message;
7
8fn main() -> Result<()> {
9 println!("=== ImageView 图像显示演示 (新库版本) ===\n");
10
11 let mut activity = Activity::new(false)?;
13 println!("✓ 连接建立\n");
14
15 let scroll = activity.create_nested_scroll_view(None)?;
17
18 let layout = activity.create_linear_layout(Some(scroll.id()))?;
20 layout.view().set_margin(&mut activity, 15)?;
21
22 let title = activity.create_text_view("🖼️ 图片显示测试", Some(layout.id()))?;
24 title.set_text_size(&mut activity, 26)?;
25 title.view().set_margin(&mut activity, 10)?;
26 title.view().set_height_wrap_content(&mut activity)?;
27 title.view().set_linear_layout_params(&mut activity, 0, None)?;
28
29 let desc = activity.create_text_view("显示一个小的测试图片", Some(layout.id()))?;
31 desc.view().set_margin(&mut activity, 5)?;
32 desc.view().set_height_wrap_content(&mut activity)?;
33 desc.view().set_linear_layout_params(&mut activity, 0, None)?;
34
35 let image_view = activity.create_image_view(Some(layout.id()))?;
37 image_view.view().set_margin(&mut activity, 10)?;
38 image_view.view().set_linear_layout_params(&mut activity, 1, None)?;
40
41 let red_pixel_png_base64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";
44
45 image_view.set_image(&mut activity, red_pixel_png_base64)?;
47
48 let status = activity.create_text_view("✅ 图片已加载", Some(layout.id()))?;
50 status.view().set_margin(&mut activity, 10)?;
51 status.view().set_height_wrap_content(&mut activity)?;
52 status.view().set_linear_layout_params(&mut activity, 0, None)?;
53 status.set_text_color(&mut activity, 0xFF4CAF50u32 as i32)?;
54
55 let button_layout = activity.create_linear_layout_horizontal(Some(layout.id()))?;
57 button_layout.view().set_margin(&mut activity, 10)?;
58 button_layout.view().set_height_wrap_content(&mut activity)?;
59 button_layout.view().set_linear_layout_params(&mut activity, 0, None)?;
60
61 let red_btn = activity.create_button("🔴 红色", Some(button_layout.id()))?;
63 red_btn.view().set_linear_layout_params(&mut activity, 1, None)?;
64
65 let green_btn = activity.create_button("🟢 绿色", Some(button_layout.id()))?;
67 green_btn.view().set_linear_layout_params(&mut activity, 1, None)?;
68
69 let blue_btn = activity.create_button("🔵 蓝色", Some(button_layout.id()))?;
71 blue_btn.view().set_linear_layout_params(&mut activity, 1, None)?;
72
73 println!("✓ 界面创建完成\n");
74 println!("━━━━━━━━━━━━━━━━━━━━━━");
75 println!("提示:");
76 println!(" • 点击按钮切换不同颜色的图片");
77 println!(" • 图片会自动缩放填充区域");
78 println!("━━━━━━━━━━━━━━━━━━━━━━\n");
79
80 let red_png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";
83 let green_png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M/wHwAEBgIApD5fRAAAAABJRU5ErkJggg==";
85 let blue_png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg==";
87
88 loop {
90 let event = read_message(activity.event_stream())?;
91 let event_type = event["type"].as_str().unwrap_or("");
92 let event_value = &event["value"];
93
94 match event_type {
95 "destroy" => {
96 println!("\n✓ Activity 已关闭");
98 return Ok(());
99 },
100 "click" => {
101 let clicked_id = event_value["id"].as_i64().unwrap_or(-1);
102
103 if clicked_id == red_btn.id() {
104 println!("🔴 切换到红色图片");
105 image_view.set_image(&mut activity, red_png)?;
106 status.set_text(&mut activity, "🔴 红色图片")?;
107 status.set_text_color(&mut activity, 0xFFF44336u32 as i32)?;
108 } else if clicked_id == green_btn.id() {
109 println!("🟢 切换到绿色图片");
110 image_view.set_image(&mut activity, green_png)?;
111 status.set_text(&mut activity, "🟢 绿色图片")?;
112 status.set_text_color(&mut activity, 0xFF4CAF50u32 as i32)?;
113 } else if clicked_id == blue_btn.id() {
114 println!("🔵 切换到蓝色图片");
115 image_view.set_image(&mut activity, blue_png)?;
116 status.set_text(&mut activity, "🔵 蓝色图片")?;
117 status.set_text_color(&mut activity, 0xFF2196F3u32 as i32)?;
118 }
119 },
120 _ => {}
121 }
122 }
123}