do-android

توسعه دهنده اندروید
  • تعداد ارسال ها

    40
  • تاریخ عضویت

  • آخرین بازدید

اعتبار در انجمن

1 Neutral

درباره do-android

  • درجه
    توسعه دهنده فعال
  1. من پیشنهاد میکنم اینکارو انجام بده. خیلی خوشگل و مرتب repeat کن. بعد از تموم شدن آهنگ دوباره همون پخش بشه : قبلش بدون که setOnCompletionListener یعنی وقتی مدیا پلیر کارش تموم شد و پلی کردن به اتمام رسید... تا بی نهایت این داستان ادامه داره. وقتی play تموم میشه دوباره play میشه و ... [shcode=java] mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.start(); } }); [/shcode] حالا اگه میخای بعد از بستن برنامه کلا متوقف بشه این : [shcode=java] @Override public void onBackPressed() { mp.stop(); mp.release(); mp = null; finish(); } [/shcode] کد بالا رو خارج از onCreate بزن. یعنی وقتی کاربر back رو زد و خاست از برنامه خارج بشه ، برنامه رو ببند و مدیاپلیر رو استپ کن.
  2. این 100 درصد طبیعیه که با انجام تمام تنظیمات layout چینی و ... بازم توی اسکرین های مختلف ، مخلفات داخل صفحه جابجا میشن پس ما جلوی جابجایی رو نمیتونیم بگیریم ولی میشه تا حد زیادی جلوی بهم ریختگی گرفته بشه منم خودم خیلی دقت میکنم که بهم نریزه. روی 2 تا گوشی تست میکنم همیشه. یکی 3.4 اینج. یکی 5.5 اینچ. بهم ریختگی هم دارم ولی با تست و تغییرات و وصحیح و خطا میتونم یه layout خوب درست کنم
  3. به نظر من سرچی نمیشه وب سرویس هارو یاد گرفت خود منم زیاد سرچ زدم و تاپیک زدم ولی نتونستم از صفر خوب یاد بگیرم یه محصولی رو پیشنهاد میکنم امیدوارم تبلیغ نشه. چون خودمم مشتریش بودم و خریدم و کامل وب سرویسهارو یاد گرفتم. به قدری کمکم کرد که مطمئنم هیچ وقت با سرچ نمیتونستم نتیجه بگیرم این پکیج منو کامل راه انداخت . توی 3 روز کار کردم و یاد گرفتم http://irprogram.com/2722/android-learning-package-chapter4.html استادشم به نظر من انصافا خوب توضیح میده
  4. بله من میدونم بین رفیق کلا Layout چیدن یکم تجربیه به نظر من و یکم داستانای خاص خودشو داره مثلا من هیچ وقت به Layout هام size نمیدم . یعنی layout:height و layout:width ش رو هیچ وقت سایز بهش نمیدم مگر در موراد خاص که بخام یه تایتلی بالای بالا باشه تا نهایتا سایز 50dp بهش بدم! چون توی اسکرین های مختلف ، اون قسمت میخاد سایز خودش رو داشته باشه. و اگه سایزش از سایز صفحه گوشی بیشتر باشه ، میپره بیرون از صفحه گوشی و دیده نمیشه ! من معمولا مخلفات داخل اکتیویتی خودم رو همیشه داخل یه RelativeLayout میزارم و layout:width رو هم fill_parent میزارم و مثلا باتن داخل اون رو دستی تنظیم میکنم که وسط باشه ، چپ باشه یا راست باشه توی هر اکتیویتی هم اگه بخام چند تا تیکه کنم واسه شلوغ کاری ، معمولا چند تا (حالا گیریم 4 تا ) RelativeLayout میزارم layout:width رو هم fill_parent میکنم بعدش به تک تک RelativeLayout هام قسمت layout:weightش رو هم یه عدد مساوی میدم. مثلا همه شون 5 دیگه یه همچین داستانایی رو داره نباید زیاد شلوغ کاری بشه حتی الامکان توی Preview All Screen sizess هم میتونی کل اسکرین سایزهارو ببینی و اگه بهم ریختگی باشه ، قبل از تولید مشاهده کنی
  5. سلام شما توی AVD Manager چیزی تعریف کردی ؟ یعنی Device ساختی ؟ dالبته یه پیشنهادی هم دارم. به نظر من هیچی گوشی خود آدم نمیشه. من همیشه تمام پروژه هامو روی گوشی ران میکنم. با سرعت بالا و کیفیت واقعی. کابل گوشیتو بزن به سیستم از توی گوشی USB-Debug رو هم تیک بزن بعدش خود ایکلیپس ، جی بیلدر و ... میشناسن گوشیو رو گوشی ران کن راحت باور کن کلا امولاتور کیفیت نداره موقع تست برنامه. یه چیز شماتیکه
  6. سلام مرحله اول : شما مقدار EditText رو روی setOnClicklisterner یک باتن بگیر . بریز توی متغیر مثلا به اسم url مرحل دوم : بعدش یه دونه WebView بنداز توی اکتیویتی مرحله سوم : کدهای WebView رو تعریف کن : [shcode=java] WebView wb = (WebView) findViewById(R.id.webView); [/shcode] مرحله چهارم : توی همون آن کلیک باتن بیا اینم اضافه کن : [shcode=java] wb.loadUrl(url); [/shcode]
  7. اینی که شما میفرمایید یعنی ما سورسش رو بنویسیم که وقتش نیست ولی از مدیا پلیر استفاده کن بعد روی setOnClickListener اون image مدیا پلیر رو پلی کن mediaPlayer.start();
  8. سلام یه اسکرین شات از ارور هاتون بگیرید ببینیم مشکل از کجاست. خیلی امکان خطاهای مختلف وجود داره نمیشه همه رو گفت
  9. سلام یه باتن تعریف کن و setOnClickListener اینجوری تعریف کن : [shcode=java] tab2_btn_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Main.this,Main_2.class); i.putExtra("position",1); startActivity(i); } }); [/shcode] دستور putExtra مقدار 1 رو درون متغیر position میریزه و اونو پاس میده به اکتیویتی با نام Main_2 حالا توی اکتیویتی Main_2 برای گرفتن مقدار 1 به این صورت عمل می کنیم : [shcode=java] int pos = getIntent().getExtras().getInt("position"); [/shcode] و مقداری که از Main پاس داده شده (همون عدد 1) رو توی متغیر pos میریزه ...
  10. توی فایل AndroidManifest.xml و قسمت : من میخام طوری تنظیم کنم که برنامه روی گوشی های ورژن اندروید 2.2 تا آخرین ورژن اندروید کار نصب بشه باید چطوری تنظیم کنم ؟
  11. دیتابیسم کار میکنه و اطلاعات رو میخونم و وارد میکنم توش فقط توی آدرس که گفتم با فایل منیجر گوشی مشاهده نمیشه دیتابیس
  12. مطالب این سایتو سرچ زدم جوابم توش نبود و تاپیک زدم من این کارارو کردم به مشکل خوردم : - یه دیتابیس با SQLite ساختم + Table مربوطه + یه خورد اطلاعاتم توش وارد کردم و ذخیره کردم با نام : dbtest - یه کلاس درست کردم با نام : databse و کد های زیر رو داخلش وارد کردم : [shcode=java] package com.example.dbtest2; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class databse extends SQLiteOpenHelper { public final String path="data/data/com.example.dbtest2/databases/"; public final String Name="dbtest"; public SQLiteDatabase mydb; private final Context mycontext; public databse(Context context) { super(context, "dbtest", null, 1); mycontext=context; } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } public void database(){ boolean checkdb=checkdb(); if(checkdb){ }else{ this.getReadableDatabase(); try{ copydatabase(); }catch(IOException e){ } } } public void open(){ mydb=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READWRITE); } public void close(){ mydb.close(); } public boolean checkdb(){ SQLiteDatabase db=null; try{ db=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READONLY); } catch(SQLException e) { } return db !=null ? true:false ; } public void copydatabase() throws IOException{ OutputStream myOutput = new FileOutputStream(path+Name); byte[] buffer = new byte[1024]; int length; InputStream myInput = mycontext.getAssets().open("dbtest"); while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myInput.close(); myOutput.flush(); myOutput.close(); } public String Display(int row,int fild){ Cursor cu= mydb.query("users", null, null, null, null, null, null); cu.moveToPosition(row); String name=cu.getString(fild); return name; } } [/shcode] مشکل اینه که با فایل منیجر گوشی که چک میکنم اصلا دیتابیسی توی آدرس : data/data/com.example.dbtest2/databases/ وجود نداره !!! انگار ساخته نشده. نمیتونم با فایل منیجر ببینمش اصلا فولدر پکیج برنامه "com.example.dbtest2" هم توی data/data نیست و نمیتونم ببینم !!! با فایل منیجر از توی روت هم سرچ میکنم بازم فولدر com.example.dbtest2 نیست !!! (ASTRO,Root Explorer) مشکلم کجاست ؟ اینم بگم ، برنامه رو توی گوشی از طریق کابل اجرا میکنم و از برنامه Intelij استفاده میکنم
  13. توی گوگل سرچ کن پره سایته http://www.freesfx.co.uk/ http://soundbible.com/
  14. سلام من این کدهارو درون کلاسی به اسم Tab2.java دارم : [shcode=java] import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class Tab2 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } public void tab2btnS_action(){ Button tab2_btn_1; tab2_btn_1 = (Button) findViewById(R.id.tab2_btn_1); tab2_btn_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getBaseContext(),"دکمه شماره 1 کلیک شد",1).show(); } }); } } [/shcode] حالا میخام درون Main.java با دستور زیر ، فانکشن tab2btnS_action() رو صدا کنم تا کدهای داخل فانکشن ، دورن کلاس Main من اجرا بشه ولی کد زیر جواب نداد : موقع ران کردن پروژه ، ارور NullPointerException میده و اصلا برنامه نمیاد بالا [shcode=java] public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new Tab2().tab2btnS_action(); } [/shcode] میخام باتن هارو (از بس زیاد هستن) توی کلاسهای مختلف ، درون فانکشن بزارم و داخل اکتیویتی Main خیلی مرتب اونارو صدا کنم تا اجرا بشن... ممنن میشم کمکم کنید یه سره درگیرشم.
  15. آموزش اضافه کردن افکت به TabHost به همراه آیکون عکس توی این آموزش ساده میخایم هنگام عوض کردن تپ ها در TabHost ، به صورت ناگهانی تب ظاهر نشه و با یک افکت انجام بشه که بهتر باشه - خوب اول توی فایل xml اصلی مون یا همون Layout یه دونه TabHost اضافه می کنیم : main.xml [shcode=xml] <?xml version="1.0" encoding="utf-8"?> android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/LinearLayout_main" android:visibility="visible"> android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/tabHost"> android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:gravity="top"> android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:measureWithLargestChild="false" android:gravity="center_vertical|center_horizontal"> android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent"> android:id="@+id/tab2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/img_icon_2"> android:id="@+id/tab3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/img_tamrin"> [/shcode] - سپس درون کلاس Main خودمون کدهای تعریف کردن TabHost به همراه عکسی که به عنوان آیکون تب هست رو به این صورت می نویسیم : [shcode=java] public class Main extends Activity { TabHost tabhost; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tabhost = (TabHost) findViewById(R.id.tabHost); tabhost.setup(); TabHost.TabSpec spec=tabhost.newTabSpec("tag1"); spec.setContent(R.id.tab1); spec.setIndicator("تب شماره 1",getResources().getDrawable(R.drawable.icon_1)); tabhost.addTab(spec); spec=tabhost.newTabSpec("tag2"); spec.setContent(R.id.tab2); spec.setIndicator("تب شماره 2",getResources().getDrawable(R.drawable.icon_2)); tabhost.addTab(spec); spec=tabhost.newTabSpec("tag3"); spec.setContent(R.id.tab3); spec.setIndicator("تب شماره 3",getResources().getDrawable(R.drawable.icon_3)); tabhost.addTab(spec); // اضافه کردن افکت به تب هاست tabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { public void onTabChanged(String tabId) { View currentView = tabhost.getCurrentView(); currentView.setAnimation(AnimationUtils.loadAnimation(Main.this, android.R.anim.slide_in_left)); } }); } } [/shcode] تموم شد فقط برای مشاهده شدن افکت هنگام عوض کردن تب ، حتما برای Tab هاتون یه عکس به عنوان Background انتخاب کنید تا افکت رو بتونید ببینید.