بسم الله الرحمن الرحيم
اليوم إن شاء الله رح نأخذ طريقة جداً رائعة و الجميع يحتاجها, لا يكاد تطبيق يخلو من النصوص الطويلة, أو نبذة تعريفية أو أو .. هذه الطريقة تستفيد منها في وضع نصوص طويلة بطريقة مختصرة.
في البداية أحب أن أوضح أنني لا استخدام هذه الطريقة لسبب .. أن الملفات الخارجية txt,tts,mp3,html,jpg وغيرها من الصيغ الاخرى المستخدمة حاول التقليل منها قدر الإمكان, لأنه بسهولة يستطيع اي شخص استخراجها من تطبيقك واعادة استخدامها.
كما إنني سابقاً ذكرت سرقت تطبيقي وهي كانت خطأ مني بإستخدام النصوص بملفات html لكي أصيغها وأنسقها بشكل مناسب وأنيق. ومن ذلك أكرر لكم قللوا من استخدام الملفات الخارجية وهي التي تستخدم داخل مجلد assets,raw,xml,drawable .
+ ذكرت إن الطريقة مميزة لأنها توفر عليك الكثير من الأوامر البرمجية سواء كانت برمجياً java أو إضافة الكثير من النصوص xml.
حسناً في البداية سوف أقوم بكتابة ملف نصي abboudi.txt وأضعه داجل مجلد assets.
سوف أستخدام في النص , رقم جوال وبريد إلكتروني وموقع إلكتروني. وهذا ما قصدته بإنه سوف يوفر عليك كتابة بعض الاوامر البرمجية, ففي حال ضغطت على الرقم سوف ينتقل بك مع الرقم الى الهاتف, وعند الضغط على البريد الالكتروني سوف ينتقلك الى البريد الالكتروني الخاص بك لارسال رسالة للعنوان المكتوب, وعند الضغط على الموقع الالكتروني سوف يتم فتح هذا الموقع من داخل المتصفح الافتراضي في جهازك.
ملف الجافا الرئيسي : Main.java
package com.andrody.test; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class Main extends Activity { TextView Text; StringBuilder sb; InputStream is; BufferedReader reader; String result; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { result=""; sb = new StringBuilder(); // بناء سترنج متعدد اي يحتوي على قيم عديدة او سلسلة متغيرة is = this.getAssets().open("abboudi.txt"); // الوصول الى الملف النصي reader = new BufferedReader(new InputStreamReader(is, "UTF8")); // قارئ بفرد وهو يستخدم عادة لقراءة الملفات الضخمة, وسوف يقرأ من الملف النصي if (is!=null) { // اذا تم ايجاد الملف while ((result = reader.readLine()) != null) { // قم بقراءة البفرد المدخل سطر سطر اي بشكل سليم ووضعه داخل سترنج str sb.append(result + "\n" ); // السترنج الذي تم بنائه في البداية قم بإضافة داخله الـسترنج str الذي تخزن داخله الملف النصي } } Text = (TextView) findViewById(R.id.TextView); // تعريف النص وربطه بالاي دي الخاص به .. النص الذي تريد وضعه داخله الملف النصي Text.setText(sb); // استخدم سلسلة السترنج التي تم بنائها وتخزين الملف النصي داخلها في محل النص المحدد is.close(); // اغلاق الادخال } catch (IOException e) { // هنا توضع الاوامر اذا ظهر اي خطأ وغالباً ما تستخدم رسالة توست لتخبرك ما هو الخطأ } } }
وضعت سطور التعليقات البسيطة وهي تفيد المبدئين فقط, ولكي تفهم كل من المصلطحات الجديدة عليك ابحث عنها في موقع المطوريين فلكل منها شرح طويل, و أغلب شروحات موقع المطوريين صعب أن تفهمه كشخص عربي, إلا الذي دارس هذا المجال.
main.xml /
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffe1e7e9"> <TextView android:id="@+id/TextView" android:layout_width="match_parent" android:layout_height="match_parent" android:autoLink="all" android:textColorLink="#f00" android:linksClickable="true" android:scrollbars="vertical" android:padding="20dp" android:textSize="15sp"/> </LinearLayout>
لاحظ في ملف اللياوت, استخدمت خصائص للنص منها :
– autoLink=”all” / تمميز الروابط جميعها.
– textColorLink=”#f00″ / تلوين الرابط باللون الأحمر وتستطيع تغييره.
– linksClickable=”true” / تفعيل الضغط على الروابط.
– scrollbars=”vertical” / تفعيل التمرير بشكل عمودي للاعلى والاسفل اذا كان النص طويل.
– padding=”20dp” / الحشوة الداخلية وهي البعد بين اطراف العنصر تكست فيو وبين النص الذي داخله.
– textSize=”15sp” / حجم النص.
معاينة : ( اضغط على الصورة لتكبيرها ).
انتظرونا في دروس قادمة وجديدة .. والسلام عليكم 🙂
اشكرك من اعماق قلبي 🙂
لاني بحثت عن هذي الطريقة طووويلاً ولم اجد حلاً الا في موقعك 🙂
السلام عليكم .. اشكرك ع الدرس .. ولكن عندي سؤال
ان اردت ان اضع اكثر من ملف txt داخل برنامجي
ماذا افعل ؟؟؟
وعليكم السلام اخي .. نفس الطريقة اخي هل جربتها ؟ ..
اذا اردت ان اكتب داخل الملف txt وحفظه
نعم يبقى محفوظ .
الملف عندى يتم قرأته اذا كان باللغه الانجليزيه
اما اذا كان باللغه العربيه فتظر علامات نجوم وبداخلها علامة استفهام
نعم أخي ظهرت هالمشكلة مع آخرين .. انسخ النص من داخل txt و انقله ولصقه بنفس الملف من اندرويد ستوديو.
شكرا اخى عبد القادر انت انسان فى قمة الروعه والموضوع اتحل خلاص بالطريقه اللى قولتها
عندى سؤال معلش :
انا التطبيق بتاعى فيه زرار واحد بس بيدخل على موقعى وحاطط اعلانات ادموب
هل ده مخالف للقوانين
وماذا اذا وضعت اكثر من زر غير مربوطين بموقع الويب هل هذا يحمينى
العفو وشكراً لك من ذوقك اخي 🙂 ..
نعم اخي مخالف, وعلى الاغلب لن يتم قبول نشره في المتجر, حالياً يوجد تدقيق كبير على هذا الموضوع ..
استخدام موقعك في تطبيق يجب ان يكون مع خدمات او وظائف اخرى بالتطبيق ..
اخى اذا وضعت ازرار اخرى زر كل زر به معلومات مختلفه عامه ، ثقافيه هكذا بجانب التطبيق هل هذا مسموح به
نعم اخي لا يوجد مشكلة ..
شكراً اخي بس عندي سوال اذا بدي اقراء من ملف من سلفر او موقع ليس من داخل مجلد assets
العفو,, الأمر بسيط نوعاً ما لكن مطلوب .. لذلك وضعته في قائمة الدروس المطلوبة .. وإن شاء الله اقوم بشرحه 🙂
سلام عليكم
ممكن تخبرني كيف ان شائت ملف نصي abboudi.txt ووضعته داخل مجلد assets.
اخي العزيز شكرا جدا لما تقدمه من مساعدات كثيره للجميع بدون استثناء وبدون مقابل ولكن لدي طلب اني مبتدا في الاندرويد ودرست اساسيات الجافا ومن ثم بعض كورسات الاندرويد واريد ان انشا تطبيق بسيط ولدي فكرته وهي ببساطه عند الضغط علي الزر ينتقل بك الي اكتيفتي اخري وهذه الاكتفتي به نص طويل وهنا المشكله اني اريد تنسيق النص ولكن لا استطيع وجد طريقتك ولكن صراحه لم افهمه فرجاء توضيح ومساعدتي
السلام عليكم يا اخي الكريم انا اريد ان اظهر ملف file.docx وورد بدل txt هل ممكن لان اريد ان الون النصوص كل فقرة بلون
السلام عليكم اخي ماذا عن بقيه انواع الملفات مثل ملفات pdf كيف اجعل البرنامج يقرأ انواع محدده من الملفات؟؟؟
السلام عليكم اخي العزيز عملت ListView والان جاهزة اريد فقط عند الضغط على عنوان يفتح text.txt مختلف عن الاخر من ملف Asset بمعنى لو افترضنا العنوان الاول في ListView تاريخ عند الضغط عليه يفتح Text.txt يختص بالتاريخ .وعند الضغط على عنوان رياضات يفتح Text.txt يختص بالرياضيات وهكذا للباقي ..انا عملت تطبيق مشابه لكن من خلال WebView اما الان احببت ان يكون ملفات Text.txt بدل WebView