بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

0 تا 100 ساختن یک کتاب بهمراه عکس بین متون - درخواست از استاد

مدیریت گفتگو
Aref 12 سال پیش
آخرین تغییر: 11 سال پیش

سلام

من از روزی که شروع کردم به کدنویسی اندروید تا 2 هفته عالی بود همه چی ولی یهو به دیتابیس خوردم و نیاز به یادگیری اون داشتم که هر چی سرچ کردم و لینک دیدم واسه یکی که بخواد از صفر شروع کنه مفید نبود و تقریباً 45 روز بدون هیچ پیشرفتی به بیهوده ترین شکل ممکن وقتم رو هدر دادم 

از آقای آقاجانی درخواست داشتم که اگه ممکنه یه پروژه 0-100 ساخت یک کتاب به همراه عکس بین متون و لیست علاقمندی و ... بنویسن چون خیلی از برنامه ها و مشکلات رو برطرف میکنه و یکی مثل من شاید چندین ایده داشته باشه و واسه بلد نبودن این مباحث درجا بزنه

تو فیلمها آموزش هست ولی پروژه ای که صرفاً همین هدف رو دنبال کنه نیست و کمی گیج میشم که مشکل از منه :(

اگه استاد وقت ندارن هم اکثر بچه ها الان ساختن چنین برنامه هایی رو کاملاً بلدن و اگه لطف کنن و بتونن فیلم کاملی بسازن خیلی خوب میشه ، هزینه ای هم باشه مشکلی نداره ، منظورم یک کتاب 1000 پستی نیست فقط 5-6 تا پست با تصاویر اول و وسط پست باشه که روال کار رو به درستی یاد بگیریم 

 

ممنون

نظرات

Programmer 12 سال پیش
سلام.دوست خوبمون اقای ادیبی قبلا همچین کار ارزشمندی رو قبلا انجام دادن : لینک
b.fat 12 سال پیش
به ویدئوی 24-3 عنایت کنید. 80% مطالب مورد نیاز برای کتاب آنجا هست. می ماند لیست علاقه مندی ها که به راحتی می توانید آن را با در نظر کرفتن یک فیلد boolean در دیتابیس فهرست کتاب درستش کنید.
Aref 12 سال پیش
خب مشکل اصلی من قرار دادن عکس بین متون هست ، واسه این باید چیکار کنم ؟ البته این فیلمی که ساخته بودن خیلی ساده بود ولی خب تو سایت نیک اندروید آموزش کاملی گذاشته بودن که بهتر از این بود ولی اونجا هم در مورد عکس چیزی نگفته بودن
javac 12 سال پیش
قرار دادن تصویر بین متون در نگاه اول شاید ساده باشه اما اینطور هم نیست در زیر من روش ش رو میگم کمااینکه سایر دوستان مثل ALU هم قبلا آموزشش رو داده بودند.
Vahid 11 سال پیش
از این تاپیک مجتبی عزیز خیلی استفاده کردم، پیشنهاد میکنم: لینک

پاسخ‌ها 6

javac 12 سال پیش

برای قرار دادن تصویر در بین متون سه تا متد تعریف کردم:

addTextView // افزودن متن 
addImageView // افزودن تصویر 
doProcess// پردازش متن

متد اصلی ما doProcess هست که داخلش یک عبارت منظم ( regExp) می نویسیم و توی متن ما هرگاه به یک "الگو" یا "تگ" رسید اون تگ رو حذف کنه و به جاش یک تصویر بچسبونه.

الان تگی که من استفاده کردم اینه:

 \\[image:'(.*?)'\\]

معنیش اینه که اگر متنی مشابه متن زیر دیدی تگ یا علامتی که گذاشتیم رو بردار و بجاش تصویر مرتبط رو بزار :

لورم ایپسوم متن ساختگی با تولید
سادگی نامفهوم از صنعت چاپ و با استفاده از
\\[image:'001.jpg'\\]
و کاربردهای متنوع با هدف بهبود ابزارهای
کاربردی می باشد. کتابهای زیادی در شصت و سه
درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد
\\[image:'002.jpg'\\]
تا با نرم افزارها شناخت بیستری را برای طراحان
رایانه ای و فرهنگ پیشرو
در زبان پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
\\[image:'003.jpg'\\]




 
    public void doProcess() {
        String content = getTextFromAssets("content.txt");

        Pattern pattern = Pattern.compile("\\[image:'(.*?)'\\]");
        Matcher matcher = pattern.matcher(content);
        int lastIndex = 0;
        while (matcher.find()) {
            String newContent = content.substring(lastIndex, matcher.start(1)).replace("[image:'", "").replace("']", "");
addTextView(newContent); String imageName = content.substring(matcher.start(1), matcher.end(1)); addImageView(imageName); lastIndex = matcher.end(1); } String newContent = content.substring(lastIndex, content.length()).replace("[image:'", "").replace("']", "");
addTextView(newContent); }
 
    private void addImageView(String imageName) {
        ImageView imageView = new ImageView(this);
        Bitmap bitmap = getImageFromAssets("pictures/" + imageName);
        imageView.setImageBitmap(bitmap);
        layoutRoot.addView(imageView);
    }
  private void addTextView(String text) {
        TextView textView = new TextView(this);
        textView.setText(text);
        textView.setTextSize(20);
        textView.setTextColor(Color.BLACK);
        layoutRoot.addView(textView);
    }

ویرایش - برای خوندن متن مورد نظرتون از assets از این متد استفاده کنید:

   private String getTextFromAssets(String fileName) {
        AssetManager assetManager = activity.getAssets();
        InputStream stream = null;
        try {
            stream = assetManager.open(fileName);
            StringBuilder builder = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String line;
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }
            return builder.toString();
        }
        catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                stream.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "";
    }

private Bitmap getImageFromAssets(String imageName) { InputStream stream = null; try { AssetManager assetManager = activity.getAssets(); stream = assetManager.open(imageName); BitmapFactory.Options bmOptions = new BitmapFactory.Options(); bmOptions.inSampleSize = 4; Bitmap bitmap = BitmapFactory.decodeStream(stream, null, bmOptions); return bitmap; } catch (IOException e) { e.printStackTrace(); } finally { try { stream.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }

نظرات

underomeda 11 سال پیش
من به این روش به کمک دوستمون javac عزیز به برنامه نوشتم که عکس بین مطالب لازم بود.حالا میخوام فونت تکست مورد نظ رو بزرگ کنم کسی هست راهنمایی کنه؟
javac 11 سال پیش
مقدار setTextSize رو باید تغییر بدی میتونی با تعریف یک متغیر و مقدار دهیش اینکار رو کنی
jamal2012 11 سال پیش
از دیتا بیس چطور بخونیم متن یه توضیح در مورد متد بالا هم میدی خیلی نامفهومه ممنون
jamal2012 11 سال پیش
اقایون تورو خدا یه توضیح بدین بدجوری لازم دارم
javac 11 سال پیش
باید برید درباره کاربا دیتابیس بخونید ، حالا که یادگرفتید ، متن رو از دیتابیس واکشی میکنید و میدین به سورس بالا و خروجی میگیرید
jamal2012 11 سال پیش
کار با دیتا بیسو کاملا میدونم (لوکال و انلاین) کد بالا رو نمیدونم چه کار میکنه کد کلیشست باید حفظ بشه؟
jamal2012 11 سال پیش
بدم به سورس بالا یعنی باcontent جایگزین کنم
javac 11 سال پیش
آره ، در قالب یه کلاس از این سورس کد استفاده کنید و با ساخت یک نمونه ازش خروجی مناسب رو بگیرید
jamal2012 11 سال پیش
کسی نمیدونه؟؟؟ کلا دارم از سایت نا مید میشم
jamal2012 11 سال پیش
اندازه تکس رو تو on resumeهنگام برگشت از صفحه تنظیمات چطور عوض کنیم
javac 11 سال پیش
با استفاده از sharedPreferences
javac 11 سال پیش
با استفاده از sharedPreferences
jamal2012 11 سال پیش
درست کردم باsharedPreferences ولی نتونستم توonresumeاستفاده کنم به همین خاطر هنگام رفتن به صفحه تنظیمات اکتیویتی رو بستم وهنگام برگشتن از تنظیمات اکتیویتی رو باز کردم صفحه قبلی اکتیویتی که بسته شده رو باadd flagنگه داشتم تو استک به نظر شما این پروسسه زیادی نمیگیره تا اینکه تو on resume بتونم اندازه متنم رو تغییر بدم
jamal2012 11 سال پیش
کسی نمیدونه تو متد on resume چطور میشه بوسیله باsharedPreferences اندازه متن رو تغییر داد من مقدار اندازه متن و فونت متن رو تو on resume میگیرم ولی نمیتونه تو onresume تکست ویویی که تو کد بالا ساخته میشه رو اندازشو عوض کنم کسی میدونه ؟
Smkm79 11 سال پیش

من سورس رو کپی کردم و ایمپورت هارو انجام دادم ، به این خط ایراد میگیره (( String content = getTextFromAssets("content.txt"); ))

اگه بگیم getFromAssets.open("folan.txt");q ارور میده ومیگه باید به InputStream تبدیل بشه . به InputStram تبدیل میکنی به subtitle و ... خطا میده و خلاصه .... نمیتونم از استس بخونمش به استرینگ هم بلدنیستم تبدیل کنم ؟ چکارکنم الان؟؟

نظرات

javac 11 سال پیش
باید فایل رو از assets بخونید و به string تبدیلش کنید - کلاس مربوطه به تاپیک اضافه شد.
javac 11 سال پیش
اصلاح میکنم - متد مربوطه اضافه گردید :))
Smkm79 11 سال پیش
متد getImageFromAssets رو هم بزار دیگه ؛ کار را که کرد؟؟ آنکه تمام کرد!!
underomeda 11 سال پیش
؟چطوری با این روش میشه اشتراک گذاری کرد عکس متن رو
jamal2012 11 سال پیش

من این خطو متوجه نمیشم

 String newContent = content.substring(lastIndex, matcher.start(1)).replace("[image:'","").replace("']","");

نظرات

jamal2012 11 سال پیش
این یعنی چی؟ replace("[image:'","").replace("']","");
javac 11 سال پیش
یعنی tag مورد نظر که خودمون تعریف کردیم واسش رو پاک کن.
javac 11 سال پیش
یعنی tag مورد نظر که خودمون تعریف کردیم واسش رو پاک کن.
jamal2012 11 سال پیش
متد getImageFromAssets رو هم بزار دیگه
jamal2012 11 سال پیش
متد getImageFromAssets رو هم بزار دیگه!!
jamal2012 11 سال پیش
هیچ کی نیست کمک کنه مخم دیگه داره رد میده
jamal2012 11 سال پیش
کسی نمیدونه؟؟؟ کلا دارم از سایت نا مید میشم
javac 11 سال پیش
متد فراخوانی تصویر از assets به سورس کدبالا اضافه شد.
jamal2012 11 سال پیش

سلام من این کارا رو انجام دادم فقط به جا تصویر از فولدر استس میاد اسم تصویر رو جایگزین میکنه چرا؟

 
 
 

نظرات

jamal2012 11 سال پیش
چند روزه وقتمو گرفته
jamal2012 11 سال پیش
من اصلا منوجه نمیشم چی جایگزین چی میشه یکی توضیح بده تو روخدا
jamal2012 11 سال پیش
من تو متن اصلی چی رو باید به عنوان پترن بیارم تو استس چی رو باید سیو کنم اسم ایمیج با پسوند یا فقط اسم ایمیجو
jamal2012 11 سال پیش
هیچ کی نیست کمک کنه مخم دیگه داره رد میده
jamal2012 11 سال پیش
کسی نمیدونه؟؟؟ کلا دارم از سایت نا مید میشم
jamal2012 11 سال پیش

اینم کد درسته؟

getImageFromAssets
 
 private Bitmap getImageFromAssets(String strName)
{
AssetManager assetManager = getAssets();
InputStream istr = null;
try {
istr = assetManager.open(strName);
}
catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}

نظرات

jamal2012 11 سال پیش
تایه حدودی جواب گرفتم ولی جای عکس خالیه
amo_milad 11 سال پیش
لطفا واسه ما هم یاد بدین ممنون
amo_milad 11 سال پیش

لطفات یکی سورس اینو بذاره لطفا لازم داریم ممنون

منم نتونستم کاری کنم باهاش بازم ممنون

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .