0 تا 100 ساختن یک کتاب بهمراه عکس بین متون - درخواست از استاد
سلام
من از روزی که شروع کردم به کدنویسی اندروید تا 2 هفته عالی بود همه چی ولی یهو به دیتابیس خوردم و نیاز به یادگیری اون داشتم که هر چی سرچ کردم و لینک دیدم واسه یکی که بخواد از صفر شروع کنه مفید نبود و تقریباً 45 روز بدون هیچ پیشرفتی به بیهوده ترین شکل ممکن وقتم رو هدر دادم
از آقای آقاجانی درخواست داشتم که اگه ممکنه یه پروژه 0-100 ساخت یک کتاب به همراه عکس بین متون و لیست علاقمندی و ... بنویسن چون خیلی از برنامه ها و مشکلات رو برطرف میکنه و یکی مثل من شاید چندین ایده داشته باشه و واسه بلد نبودن این مباحث درجا بزنه
تو فیلمها آموزش هست ولی پروژه ای که صرفاً همین هدف رو دنبال کنه نیست و کمی گیج میشم که مشکل از منه :(
اگه استاد وقت ندارن هم اکثر بچه ها الان ساختن چنین برنامه هایی رو کاملاً بلدن و اگه لطف کنن و بتونن فیلم کاملی بسازن خیلی خوب میشه ، هزینه ای هم باشه مشکلی نداره ، منظورم یک کتاب 1000 پستی نیست فقط 5-6 تا پست با تصاویر اول و وسط پست باشه که روال کار رو به درستی یاد بگیریم
ممنون
برای قرار دادن تصویر در بین متون سه تا متد تعریف کردم:
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; }
من سورس رو کپی کردم و ایمپورت هارو انجام دادم ، به این خط ایراد میگیره (( String content = getTextFromAssets("content.txt"); ))
اگه بگیم getFromAssets.open("folan.txt");q ارور میده ومیگه باید به InputStream تبدیل بشه . به InputStram تبدیل میکنی به subtitle و ... خطا میده و خلاصه .... نمیتونم از استس بخونمش به استرینگ هم بلدنیستم تبدیل کنم ؟ چکارکنم الان؟؟
من این خطو متوجه نمیشم
String newContent = content.substring(lastIndex, matcher.start(1)).replace("[image:'","").replace("']","");
سلام من این کارا رو انجام دادم فقط به جا تصویر از فولدر استس میاد اسم تصویر رو جایگزین میکنه چرا؟
اینم کد درسته؟
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;
}
لطفات یکی سورس اینو بذاره لطفا لازم داریم ممنون
منم نتونستم کاری کنم باهاش بازم ممنون
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .