cuốn sách gpt4 ai đã làm

Lộ trình học HarmonyOS: kiến ​​thức cơ bản về phát triển - file tài nguyên

In lại Tác giả: Người biết Thời gian cập nhật: 2024-03-13 05:02:38 26 4
mua khóa gpt4 Nike

Phân loại các tập tin tài nguyên

thư mục tài nguyên

Các tệp tài nguyên của ứng dụng (chuỗi, hình ảnh, âm thanh, v.v.) được lưu trữ thống nhất trong thư mục tài nguyên, giúp nhà phát triển sử dụng và bảo trì dễ dàng hơn. Thư mục tài nguyên bao gồm hai loại thư mục chính, một là thư mục cơ sở và thư mục đủ điều kiện, và loại còn lại là thư mục rawfile.
Ví dụ về thư mục tài nguyên:

tài nguyên |---base // Thư mục mặc định | |---element |---string.json | mdpi // Ví dụ về thư mục Vòng loại, nhà phát triển cần tự tạo |---element | Thư mục tồn tại theo mặc định
thư mục vòng loại

Thư mục vòng loại có thể bao gồm một hoặc nhiều vòng loại mô tả các kịch bản ứng dụng hoặc đặc điểm thiết bị, bao gồm mã quốc gia di động và mã mạng di động, ngôn ngữ, văn bản, quốc gia hoặc khu vực, màn hình ngang và dọc, loại thiết bị, chế độ màu và mật độ màn hình. Các kích thước bằng nhau, các từ hạn định được kết nối bằng dấu gạch dưới (_) hoặc dấu gạch ngang (-). Khi nhà phát triển tạo thư mục vòng loại, họ cần hiểu các yêu cầu đặt tên của thư mục vòng loại và các quy tắc khớp giữa thư mục vòng loại và trạng thái thiết bị.

Yêu cầu đặt tên cho thư mục vòng loại
  • Thứ tự kết hợp của các từ hạn định: mã quốc gia di động_mã mạng di động-ngôn ngữ_văn bản_quốc gia hoặc vùng-màn hình ngang và dọc-loại thiết bị-chế độ tối-mật độ màn hình. Nhà phát triển có thể chọn một hoặc một số loại từ hạn định để tạo tên thư mục dựa trên các tình huống sử dụng ứng dụng và đặc điểm của thiết bị.
  • Cách kết nối vòng loại: Sử dụng dấu gạch dưới (), mã quốc gia di động và mã mạng di động cũng được gạch chân () được kết nối và các vòng loại khác được kết nối bằng dấu gạch ngang (-). Ví dụ: zh_Hant_CN, zh_CN-car-ldpi.
  • Phạm vi giá trị của vòng loại: Giá trị của từng loại vòng loại phải đáp ứng các điều kiện trong Bảng 2, nếu không, các tệp tài nguyên trong thư mục sẽ không khớp.
So khớp quy tắc giữa thư mục vòng loại và trạng thái thiết bị
  • Khi khớp các tệp tài nguyên tương ứng cho các thiết bị, mức độ ưu tiên của việc khớp thư mục vòng loại từ cao đến thấp là: Mã quốc gia di động và mã mạng di động > Khu vực (ngôn ngữ_văn bản_quốc gia hoặc khu vực) > Màn hình ngang và dọc > Loại thiết bị > Chế độ màu > Mật độ màn hình.
  • Nếu thư mục vòng loại chứa mã quốc gia di động và mã mạng di động, ngôn ngữ, văn bản, màn hình ngang và dọc, loại thiết bị và bộ định tính chế độ màu thì giá trị của bộ định tính tương ứng phải hoàn toàn nhất quán với trạng thái thiết bị hiện tại trước khi thư mục có thể tham gia Tài nguyên của thiết bị phù hợp. Ví dụ: thư mục vòng loại "zh_CN-car-ldpi" không thể tham gia khớp tài nguyên của thiết bị "en_US".
Thư mục nhóm tài nguyên

Các thư mục nhóm tài nguyên (bao gồm phần tử, phương tiện, hoạt ảnh, bố cục, đồ họa và hồ sơ) có thể được tạo trong thư mục cơ sở và thư mục vòng loại để lưu trữ các loại tệp tài nguyên cụ thể.
phần tử: Thể hiện tài nguyên phần tử. Mỗi loại dữ liệu bên dưới được thể hiện bằng tệp JSON tương ứng.
media: Đại diện cho các tài nguyên đa phương tiện, bao gồm hình ảnh, âm thanh, video và các tệp định dạng phi văn bản khác
hoạt ảnh: Thể hiện tài nguyên hoạt ảnh ở định dạng tệp XML.
bố cục: thể hiện tài nguyên bố cục, sử dụng định dạng tệp XML.
đồ họa: Biểu thị các tài nguyên có thể vẽ ở định dạng tệp XML.
profile: Cho biết các loại file khác, được lưu dưới dạng file gốc.

Tạo tập tin tài nguyên

Trong thư mục tài nguyên, bạn có thể tạo các thư mục con và tệp trong thư mục theo hướng dẫn dành cho thư mục vòng loại và thư mục nhóm tài nguyên.
Đồng thời, DevEco Studio còn cung cấp giao diện tạo thư mục tài nguyên và file tài nguyên.

  • Tạo thư mục tài nguyên và tập tin tài nguyên
    Chọn "Mới > Tệp tài nguyên Harmony" từ menu chuột phải của thư mục tài nguyên. Tại thời điểm này, bạn có thể tạo các thư mục và tệp cùng một lúc.
    Tệp được tạo theo mặc định trong nhóm tài nguyên tương ứng trong thư mục cơ sở. Nếu vòng loại được chọn, thư mục vòng loại + nhóm tài nguyên sẽ được tạo tự động theo quy ước đặt tên và tệp sẽ được tạo trong thư mục.
    Tên thư mục được tạo tự động và định dạng được cố định thành "nhóm tài nguyên vòng loại". Ví dụ: khi tạo vòng loại, vòng loại là màn hình dọc trong danh mục màn hình ngang và dọc, nhóm tài nguyên là thư mục tài nguyên vẽ. và tên thư mục được tạo tự động là "vertical.graphic".

  • Tạo thư mục tài nguyên
    Chọn "Mới > Thư mục tài nguyên Harmony" từ menu chuột phải của thư mục tài nguyên để tạo thư mục tài nguyên.
    Chọn loại nhóm tài nguyên, đặt bộ hạn định và tự động tạo tên thư mục sau khi tạo. Định dạng tên thư mục được cố định thành "nhóm Qualifier.resource". Ví dụ: khi tạo vòng loại, vòng loại là màn hình dọc trong danh mục màn hình ngang và dọc, nhóm tài nguyên là thư mục tài nguyên vẽ và thư mục được tạo tự động. tên là "vertical.graphic".

  • Tạo tập tin tài nguyên
    Chọn "Mới > Tệp tài nguyên XXX" từ menu chuột phải của thư mục tài nguyên để tạo tệp tài nguyên tương ứng với thư mục nhóm tài nguyên.
    Ví dụ: bạn có thể tạo Tệp tài nguyên phần tử mới trong thư mục phần tử.

Sử dụng các tập tin tài nguyên

Cách tham chiếu các tệp tài nguyên

Các tệp tài nguyên trong thư mục cơ sở và thư mục vòng loại: Được tham chiếu bằng cách chỉ định loại (loại) tài nguyên và tên (tên) tài nguyên.

  • Định dạng của tệp tài nguyên tham chiếu tệp Java:ResourceTable.type_name. Cụ thể, nếu tham chiếu đến tài nguyên hệ thống, hãy sử dụng:ohos.global.systemres.ResourceTable.type_name.

  • Ví dụ 1: Trong tệp Java, tham chiếu tài nguyên loại "Chuỗi" và tên "app_name" trong tệp string.json.

ohos.global.resource.ResourceManager resManager = this.getResourceManager(); Kết quả chuỗi = resManager.getElement(ResourceTable.String_app_name).getString();
  • Ví dụ 2: Trong tệp Java, tham chiếu tài nguyên thuộc loại "Màu" và tên "đỏ" trong tệp color.json.
ohos.global.resource.ResourceManager resManager = this.getResourceManager(); int color = resManager.getElement(ResourceTable.Color_red).getColor();
  • Định dạng của tệp tài nguyên được tham chiếu bởi tệp XML: $type:name. Đặc biệt, nếu tham chiếu đến tài nguyên hệ thống, hãy sử dụng: $ohos:type:name.
    Trong tệp XML, tham chiếu tài nguyên loại "Chuỗi" và tên "app_name" trong tệp string.json. Ví dụ như sau:
   

Các tệp tài nguyên trong thư mục rawfile: được tham chiếu bằng cách chỉ định đường dẫn tệp và tên tệp.
Trong tệp Java, tham chiếu tệp tài nguyên có đường dẫn "resources/rawfile/" và tên "example.js".

ohos.global.resource.ResourceManager resManager = this.getResourceManager(); ohos.global.resource.RawFileEntry rawFileEntry = resManager.getRawFileEntry("resources/rawfile/example.js");
Tệp tài nguyên hệ thống

ic_app: Biểu thị biểu tượng mặc định của ứng dụng HarmonyOS.
request_location_reminder_title: Tiêu đề lời nhắc cho biết "Yêu cầu sử dụng chức năng định vị thiết bị".
request_location_reminder_content: cho biết nội dung nhắc "yêu cầu sử dụng chức năng định vị thiết bị", nghĩa là: vui lòng bật công tắc "thông tin vị trí" trong thanh phím tắt thả xuống.

Định nghĩa chế độ màu

Ứng dụng có thể xác định trường "colorMode" trong trường mô-đun của config.json. Trường "colorMode" được sử dụng để xác định chế độ màu của chính ứng dụng. Giá trị có thể là "tối", "sáng" hoặc "tự động" ( giá trị mặc định). Ví dụ:

"colorMode": "ánh sáng"

Khi giá trị chế độ màu của ứng dụng là "tối", bất kể chế độ màu hiện tại của hệ thống là gì, ứng dụng sẽ luôn chọn tài nguyên theo chế độ tối, tương tự, khi giá trị chế độ màu của ứng dụng là "sáng"; ", bất kể chế độ màu hiện tại của hệ thống là gì, ứng dụng sẽ luôn chọn tài nguyên theo giá trị chế độ ánh sáng; khi giá trị chế độ màu của ứng dụng là "tự động", ứng dụng sẽ chọn tài nguyên theo hệ thống giá trị chế độ màu. Ứng dụng có thể lấy chế độ màu hiện tại của ứng dụng trong mã như sau:

int colorMode = Cấu hình.colorMode;
Thêm nhận xét hoặc số nhận dạng đặc biệt vào tệp tài nguyên Element

Tài nguyên thuộc các loại phần tử khác nhau trong thư mục Phần tử được biểu thị bằng các tệp JSON. Tên tài nguyên "tên" và giá trị "giá trị" là các trường bắt buộc cho mỗi tài nguyên.

  • Nếu bạn cần nhận xét về một tài nguyên nhất định để tạo điều kiện cho việc hiểu và sử dụng tài nguyên đó, bạn có thể thêm nhận xét thông qua trường nhận xét.
  • Nếu một phần văn bản trong trường giá trị không cần người dịch xử lý và sẽ không hiển thị trên giao diện ứng dụng, thì có thể sử dụng cấu trúc đặc biệt để xác định nội dung không cần dịch.
Thêm nhận xét qua trường nhận xét

Thông qua trường nhận xét, bạn có thể thêm nhận xét vào tài nguyên của tệp JSON. Ví dụ như sau:

{ "string":[ { "name":"message_arrive", "value": "Chúng tôi sẽ đến %s", "comment">Chuyển thời gian đến. %s là thời gian, khoảng 5:00 sáng" } ] }
Sử dụng các cấu trúc đặc biệt để xác định nội dung không cần dịch

Trong ba loại tài nguyên, chuỗi, strarray và số nhiều, các mã định danh đặc biệt có thể được sử dụng để xử lý nội dung không cần dịch. Ví dụ: Giá trị của tài nguyên chuỗi là "Chúng tôi sẽ đến %s" và biến "%s" dự kiến ​​sẽ không thay đổi trong quá trình dịch thuật. Có hai cách để xử lý nó:

  • Cách 1: Thêm {} vào trường giá trị. Ví dụ như sau:
{ "string":[ { "name":"message_arrive", "value":["Chúng tôi sẽ đến",{ "id"thời gian", "example":"5:00 sáng", "value" :"%s" } ] } ] }
  • Cách 2: Thêmxliff:gcặp thẻ . Ví dụ như sau:
{ "string":[ { "name":"message_arrive", "value": Chúng tôi sẽ đến %s " } ] }
ví dụ boolean.json
{ "boolean":[ { "name":"boolean_1", "value":true }, { "name":boolean_ref", "value":"$boolean:boolean_1" } ] }
ví dụ về color.json
{ "color":[ { "name":"red", "value":"#ff0000" }, { "name":"red_ref", "value":"$color:red" } ] }
ví dụ float.json
{ "float":[ { "name":"float_1", "value":"30.6" }, { "name":"float_ref", "value":"$float:float_1" }, { "name": "float_px", "giá trị:":100px" } ] }
ví dụ về intarray.json
{ "intarray":[ { "name://intarray_1", "value":[ 100, 200, "$integer:integer_1" ] } ] }
ví dụ về số nguyên.json
{ "integer":[ { "name":"integer_1", "value":100 }, { "name":integer_ref", "value":"$integer:integer_1" } ] }
ví dụ về mẫu.json
{ "pattern":[ { "name": "cơ sở", "giá trị":[ { "tên": "chiều rộng", "giá trị": "100vp" }, { "tên": "chiều cao", "giá trị" :"100vp" }, { "name":"size", "value":"25px" } ] }, { "name":"child", "parent":"base", "value":[ { "name":noTitile", "value": "Có" } ] } ] }
số nhiều.jsonVí dụ
{ "plural":[ { "name":"eat_apple", "value":[ { "quantity":one", "value":%d apple" }, { "quantity":"khác", " value:"%d táo" } ] } ] }
ví dụ về strarray.json
{ "straarray":[ { "name":"size", "value":[ { "value:"small" }, { "value":"$string:hello" }, { "value"large" " }, { "giá trị:"cực lớn" } ] } ] }
ví dụ về string.json
{ "string":[ { "name":hello", "value"hello base" }, { "name":"app_name", "value":"ứng dụng của tôi" }, { "name": app_name_ref", "value":"$string:app_name" }, { "name":"app_sys_ref", "value":"$ohos:string:request_location_reminder_title" } ] }

Hỗ trợ năng lực quốc tế

Quốc tế hóa ngày và giờ

Các khu vực khác nhau có thói quen hiển thị ngày và giờ khác nhau. Ví dụ: định dạng thời gian ngắn ở vùng tiếng Anh (Hoa Kỳ) là "9:31 sáng"; định dạng thời gian ngắn ở vùng tiếng Trung giản thể (Trung Quốc) là "9:31 sáng" và định dạng thời gian ngắn ở vùng Vùng Phần Lan (Phần Lan) là "9,31". Điều này cung cấp cho các nhà phát triển khả năng thu được thông số kỹ thuật về ngày và giờ ở các khu vực khác nhau.
Việc hiển thị chuỗi ngày giờ và điều khiển thời gian trên giao diện phải tuân theo các quy tắc thông thường của địa phương. Khi cần hiển thị thời gian hoặc ngày tháng, bạn nên lấy thông số kỹ thuật về ngày giờ của khu vực hiện tại và định dạng các chuỗi được hiển thị theo. các thông số kỹ thuật thu được Sử dụng lại.

Ví dụ 1:

Locale locale = new Locale("de", "CH"); Chuỗi khung = "MMMMd"; Chuỗi bestPattern = DateFormatUtil.getBestPattern(skeleton, locale);

Ví dụ 2:

Chuỗi ngôn ngữTag = "zh"; Chuỗi ra = DateFormatUtil.format ("EEEEdMMMMy", ngôn ngữTag, "Châu Á/Thượng Hải", 0, 3600 * 1000); // Giá trị trả về là "Thứ Năm, ngày 1 tháng 1 năm 1970"
Quốc tế hóa số điện thoại

Số điện thoại ở các vùng khác nhau có hiệu ứng định dạng khác nhau. Khi cần hiển thị số điện thoại địa phương, cần tuân thủ nguyên tắc định dạng của số điện thoại địa phương. Do đó, nó cung cấp cho các nhà phát triển khả năng định dạng số điện thoại ở các vùng khác nhau để có thể định dạng chính xác khi hiển thị số điện thoại. Nó cũng cung cấp khả năng lấy vị trí của số điện thoại. Nhà phát triển có thể sử dụng các giao diện có liên quan để lấy thông tin vị trí của số điện thoại.

Ví dụ 1:

Bộ định dạng inputFormatter = inputFormatter.getInstance("CN"); formatter.inputNumberAndRememberPosition('1'); // Giá trị trả về là "1" formatter.inputNumber('5'); // Giá trị trả về là bộ định dạng "15". inputNumber( '6'); // Giá trị trả về là "156" formatter.inputNumberAndRememberPosition('1');// Giá trị trả về là "156 1"

Ví dụ 2:

Locale.Builder builder = new Locale.Builder(); builder.setLanguage("zh"); builder.setRegion("CN"); builder.setScript("Hant"); = PhoneNumberAttribution.getAttribution("+8615611xxxxxx", "CN", locale); // x là số bất kỳ và giá trị trả về là "Thành phố Bắc Kinh"
nhận dạng văn bản

Cung cấp khả năng nhận dạng văn bản cho địa chỉ, thời gian, ngày tháng và số điện thoại. Các giao diện liên quan có thể được gọi để xác định địa chỉ, thời gian, ngày tháng và số điện thoại có trong một đoạn văn bản.
Ví dụ:

// Khi Locale.getDefault().getLanguage() là "en" String source = "it is 123 test St"; int[] re = TextRecognitionUtils.getAddress(source); result = source.substring(re[1], re[2] + 1);//Giá trị trả về là "123 main St" }
Định dạng trọng lượng và thước đo

Cung cấp hỗ trợ cho khả năng quốc tế hóa của trọng lượng và thước đo, hỗ trợ chuyển đổi giữa các hệ thống trọng lượng và thước đo cũng như tự động chuyển đổi hệ thống trọng lượng và thước đo ở các quốc gia khác nhau. Khi phát triển các tính năng bao gồm trọng lượng và thước đo, khả năng này có thể được yêu cầu để đáp ứng nhu cầu của người dùng ở nhiều ngôn ngữ và các quốc gia khác nhau.

Ví dụ 1:

Ngôn ngữ zhCN = Locale.CHINA; MeasureFormatter mes = MeasureFormatter.getInstance(zhCN); mes.format(MeasureOptions.Unit.AREA_UK_ACRE, 10000, MeasureOptions.Usage.AREA_LAND_AGRICULT, MeasureOptions.FormatStyle.WIDE, MeasureOptions.Style.AUTO_STYLE_ON));/ / Giá trị trả về là “4.046,856 ha”

Ví dụ 2:

Locale enUS = Locale.US; MeasureFormatter mes = MeasureFormatter.getInstance(enUS); mes.format(MeasureOptions.Unit.VOLUME_US_CUP, 1000, MeasureOptions.Unit.VOLUME_SI_LITER, MeasureOptions.FormatStyle.WIDE));//Giá trị trả về là " 236,588 "lít"
Những điều cấm kỵ nhạy cảm

Cung cấp quyền truy cập vào các khu vực, thành phố và ngôn ngữ nhạy cảm về mặt chính trị cũng như khả năng sửa tên khu vực.
Ví dụ:

Locale locale = Locale.getDefault(); ArrayList result = LocaleHelperUtils.getBlockedRegions(context, locale);//Giá trị trả về chứa "EH" và "XK" (Tây Sahara và Kosovo), hai vùng này có mục đích sử dụng chính trị thận trọng ở khu vực tranh chấp
26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress