0 تا 100 ساختن یک کتاب بهمراه عکس بین متون - درخواست از استاد
مدیریت گفتگو
سلام
من از روزی که شروع کردم به کدنویسی اندروید تا 2 هفته عالی بود همه چی ولی یهو به دیتابیس خوردم و نیاز به یادگیری اون داشتم که هر چی سرچ کردم و لینک دیدم واسه یکی که بخواد از صفر شروع کنه مفید نبود و تقریباً 45 روز بدون هیچ پیشرفتی به بیهوده ترین شکل ممکن وقتم رو هدر دادم
از آقای آقاجانی درخواست داشتم که اگه ممکنه یه پروژه 0-100 ساخت یک کتاب به همراه عکس بین متون و لیست علاقمندی و ... بنویسن چون خیلی از برنامه ها و مشکلات رو برطرف میکنه و یکی مثل من شاید چندین ایده داشته باشه و واسه بلد نبودن این مباحث درجا بزنه
تو فیلمها آموزش هست ولی پروژه ای که صرفاً همین هدف رو دنبال کنه نیست و کمی گیج میشم که مشکل از منه :(
اگه استاد وقت ندارن هم اکثر بچه ها الان ساختن چنین برنامه هایی رو کاملاً بلدن و اگه لطف کنن و بتونن فیلم کاملی بسازن خیلی خوب میشه ، هزینه ای هم باشه مشکلی نداره ، منظورم یک کتاب 1000 پستی نیست فقط 5-6 تا پست با تصاویر اول و وسط پست باشه که روال کار رو به درستی یاد بگیریم
ممنون
پاسخها 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;
}
نظرات
لطفات یکی سورس اینو بذاره لطفا لازم داریم ممنون
منم نتونستم کاری کنم باهاش بازم ممنون
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
نظرات