Farzad Sarseifi

مدیریت انجمن
  • تعداد ارسال ها

    1,568
  • تاریخ عضویت

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

  • Days Won

    69

تمامی ارسال های Farzad Sarseifi

  1. کدام ورژن اندروید استودیو رو نصب کردید و همچنین ورژن Gradle چند میباشد‌؟
  2. این خطا میگه ورژن اندروید استودیو و Gradle با هم سازگار نیستند.یا IDE و یا Gradle خودتون رو اپدیت کنید
  3. کاربران گرامی انجمن اندروید ایران با درود همانند روال سال های گذشته ، انجمن برنامه نویسی پی سی دروید اقدام به انتشار هدایای نوروزی نموده است ، امیدواریم هدایای این دوره عیدی خوبی برای کاربران گرامی انجمن باشد.پس در نوروز کنار ما باشید با تشکر انجمن اندروید ایران
  4. در این آموزش قصد داریم یک لیست از اطلاعات را با استفاده از RecyclerView ایجاد کنیم که سطرهای قابلیت انتخاب و تغییر شدن را داشته باشند Gradle compile 'com.android.support:recyclerview-v7:23.0.0' activity_recycle_view_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".RecycleViewMainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" /> </RelativeLayout> list_item_row.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list_row" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:orientation="vertical"> <LinearLayout android:id="@+id/linear" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/plantImageView" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY" android:src="@mipmap/ic_launcher" /> <LinearLayout android:id="@+id/innerLayout" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_weight="0.9" android:orientation="vertical"> <TextView android:id="@+id/personNameTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:fontFamily="sans-serif-light" android:singleLine="true" android:textColor="#5B5B5B" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/personDsgTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:fontFamily="sans-serif-light" android:singleLine="true" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#787878" /> <TextView android:id="@+id/personAddTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:fontFamily="sans-serif-light" android:singleLine="true" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#787878" /> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@+id/linear" android:background="#787878" /> </RelativeLayout> RecycleViewMainActivity.java import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import java.util.ArrayList; public class RecycleViewMainActivity extends AppCompatActivity { private ArrayList<Person> mPersonList; private RecyclerView mRecyclerView; private CustomAdapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycle_view_main); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView mRecyclerView.setHasFixedSize(true); // use a linear layout manager mLayoutManager = new LinearLayoutManager(getApplicationContext()); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.addOnItemTouchListener( new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { try { mAdapter.setSelected(position); } catch (Exception e) { e.printStackTrace(); } } }) ); setupPersonList(); } private void setupPersonList() { mPersonList = new ArrayList<Person>(); mPersonList.clear(); for (int i = 0; i < 25; i++) { Person person = new Person("Person " + i, "Desgination " + i, "Address " + i); mPersonList.add(person); } mAdapter = new CustomAdapter(mPersonList, this); mRecyclerView.setAdapter(mAdapter); } } RecyclerItemClickListener.java import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { private OnItemClickListener mListener; public interface OnItemClickListener { public void onItemClick(View view, int position); } GestureDetector mGestureDetector; public RecyclerItemClickListener(Context context, OnItemClickListener listener) { mListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return true; } }); } @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { View childView = view.findChildViewUnder(e.getX(), e.getY()); if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(childView, view.getChildPosition(childView)); return true; } return false; } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { } } CustomAdapter.java import android.content.Context; import android.content.SharedPreferences; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.ArrayList; public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { private ArrayList<Person> mPersonList; private SharedPreferences mPref; private SharedPreferences.Editor mEditor; // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder public class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case TextView personNameTextView, personAddTextView, personDsgTextView; RelativeLayout list_row; public ViewHolder(View v) { super(v); personNameTextView = (TextView) v.findViewById(R.id.personNameTextView); personAddTextView = (TextView) v.findViewById(R.id.personAddTextView); personDsgTextView = (TextView) v.findViewById(R.id.personDsgTextView); list_row = (RelativeLayout) v.findViewById(R.id.list_row); } } public void add(int position, Person item) { mPersonList.add(position, item); notifyItemInserted(position); } public void remove(String item) { int position = mPersonList.indexOf(item); mPersonList.remove(position); notifyItemRemoved(position); } // Provide a suitable constructor (depends on the kind of dataset) public CustomAdapter(ArrayList<Person> personList, Context context) { mPersonList = personList; mPref = context.getSharedPreferences("person", Context.MODE_PRIVATE); mEditor = mPref.edit(); } // Create new views (invoked by the layout manager) @Override public CustomAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_row, parent, false); // set the view's size, margins, paddings and layout parameters ViewHolder vh = new ViewHolder(v); return vh; } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder holder, int position) { // - get element from your dataset at this position // - replace the contents of the view with that element holder.personNameTextView.setText(mPersonList.get(position).getPersonName()); holder.personAddTextView.setText(mPersonList.get(position).getPersonAdd()); holder.personDsgTextView.setText(mPersonList.get(position).getPersonDsg()); Log.e("selection", "" + mPersonList.get(position).isSelected()); if (mPersonList.get(position).isSelected()) { holder.list_row.setBackgroundColor(Color.parseColor("#d5d5d5")); } else { holder.list_row.setBackgroundColor(Color.TRANSPARENT); } } public void setSelected(int pos) { try { if (mPersonList.size() > 1) { mPersonList.get(mPref.getInt("position", 0)).setSelected(false); mEditor.putInt("position", pos); mEditor.commit(); } mPersonList.get(pos).setSelected(true); notifyDataSetChanged(); } catch (Exception e) { e.printStackTrace(); } } // Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return mPersonList.size(); } } Person.java public class Person { String personName; String personAdd; String personDsg; boolean selected; Person(String name, String dsg, String add) { this.personName = name; this.personAdd = add; this.personDsg = dsg; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } public String getPersonDsg() { return personDsg; } public void setPersonDsg(String personDsg) { this.personDsg = personDsg; } public String getPersonAdd() { return personAdd; } public void setPersonAdd(String personAdd) { this.personAdd = personAdd; } public String getPersonName() { return personName; } public void setPersonName(String personName) { this.personName = personName; } }
  5. فقط بنویسید context=getApplicationContext();
  6. چندی قبل گوگل نسخه پیش نمایش توسعه دهندگان اندروید O را منتشر کرد که در واقع نخستین توزیع قابل دانلود از آن برای عموم محسوب می شود. البته قبل از آنکه بیش از اندازه هیجان زده شوید باید خاطرنشان کنیم که طبق اعلام گوگل این نسخه صرفا برای توسعه دهندگان منتشر شده و «برای استفاده روزانه یا کاربری» مناسب نیست. اولین پیش نمایش توسعه دهندگان اندروید جدید درست مانند هر ورژن دیگری که برای این قشر از کاربران عرضه می شود مملو از باگ است و «با مشکلات متعددی به لحاظ عملکرد و ثبات» روبروست. گفتنی است این ورژن از اندروید روی دستگاه های زیر قابل نصب خواهد بود: پیکسل و پیکسل اکس ال، پیکسل سی گوگل، نکسوس ۶ پی، نکسوس ۵ اکس و نکسوس پلیر. برای دانلود ایمیج های این نسخه نیز می توانید از طریق این لینک اقدام نمایید و هشدارهای انتشار آن (شامل لیست طولانی از باگ ها) را هم می توانید از طریق این لیست دریافت نمایید. خلاصه کلام اینکه حالا می توانید به شمایی کلی از امکانات و قابلیت های نسخه نهایی اندروید O دست پیدا کنید هرچند که هنوز نام اصلی آن مشخص نشده. در زیر فهرستی خلاصه وار از امکانات و قابلیت های این نسخه از اندروید را ملاحظه می کنید: نوتیفیکیشن های پیشرفته (کاربران به کنترل بالایی روی انواع مختلف اعلان دست پیدا می کنند) محدودیت های پس زمینه اپلیکیشن ها (برای بهبود عمر باتری) نمایشگر تصویر در تصویر (با فراهم نمودن امکاناتی شامل مشاهده ویدیو در حین چت یا استفاده از دیگر اپلیکیشن ها) آیکون های قابل انطباق وسعت رنگ زیاد برای اپلیکیشن ها پشتیبانی از کدک های صدای بلوتوثی باکیفیت همانطور که گفته شد این نسخه از اندروید صرفا برای توسعه دهندگان منتشر شده با این همه در دسترس بودن آن نشانه ایست بر اینکه کاربران معمولی این سیستم عامل نیز به زودی می توانند از اندروید O استفاده نمایند. منبع : http://dgto.ir/g28
  7. نباید مشکل خاصی باشه،مگر اینکه اشتباهی کدی اضافی نوشته باشید
  8. روی دیوایس هم تست کردید این مورد رو یا فقط جنی موشن ؟
  9. چرا نوشتید context.getApplicationContext ؟؟
  10. کدوم نقطه میتونید مشخصش کنید دقیق کجای تصویر منظورتونه؟
  11. لاگ ارور رو بزارید بررسی کنیم مشکل رو
  12. این رنگ colorAcsent هستش که توی theme گذاشتید
  13. minsdk رو روی چند قرار داده اید ؟
  14. توی res یک پوشه به اسم anim ایجاد کنید و اونجا ایجاد کنید فایل هارو
  15. کدها مشخصه کجا بزارید.کدومشون رو مشکل دارید راهنمایی کنم
  16. باید با اندروید استودیو کار کنید
  17. خط از خط اول هستش اسم پکیج پروژه نیستش
  18. سلام وقت بخیر کد لایوت و کتابخانه design <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="160dp" android:layout_gravity="bottom|end" android:layout_marginRight="@dimen/fab_margin" android:visibility="invisible" app:backgroundTint="@color/colorFAB2" app:elevation="6dp" app:pressedTranslationZ="12dp" android:src="@drawable/ic_done" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="90dp" android:layout_gravity="bottom|end" android:layout_marginRight="@dimen/fab_margin" android:visibility="invisible" app:elevation="6dp" app:backgroundTint="@color/colorFAB1" app:pressedTranslationZ="12dp" android:src="@drawable/ic_message" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" app:elevation="6dp" app:backgroundTint="@color/colorAccent" app:pressedTranslationZ="12dp" android:layout_margin="@dimen/fab_margin" android:src="@drawable/ic_add" /> </android.support.design.widget.CoordinatorLayout> انیمیشن های باز و بسته شدن fab : fab_open <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <scale android:duration="300" android:fromXScale="0.0" android:fromYScale="0.0" android:interpolator="@android:anim/linear_interpolator" android:toXScale="0.8" android:pivotX="50%" android:pivotY="50%" android:toYScale="0.8" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator" android:duration="300"/> </set> fab_close <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <scale android:duration="300" android:fromXScale="0.8" android:fromYScale="0.8" android:interpolator="@android:anim/linear_interpolator" android:toXScale="0.0" android:pivotX="50%" android:pivotY="50%" android:toYScale="0.0" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:interpolator="@android:anim/accelerate_interpolator" android:duration="300"/> </set> rotate_forward <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" > <rotate android:fromDegrees="0" android:toDegrees="45" android:pivotX="50%" android:pivotY="50%" android:duration="300" android:interpolator="@android:anim/linear_interpolator"/> </set> rotate_backward <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" > <rotate android:fromDegrees="45" android:toDegrees="0" android:pivotX="50%" android:pivotY="50%" android:duration="300" android:interpolator="@android:anim/linear_interpolator"/> </set> کد اکتیویتی : MainActivity.java import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Boolean isFabOpen = false; private FloatingActionButton fab,fab1,fab2; private Animation fab_open,fab_close,rotate_forward,rotate_backward; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); fab = (FloatingActionButton)findViewById(R.id.fab); fab1 = (FloatingActionButton)findViewById(R.id.fab1); fab2 = (FloatingActionButton)findViewById(R.id.fab2); fab_open = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_open); fab_close = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fab_close); rotate_forward = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotate_forward); rotate_backward = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotate_backward); fab.setOnClickListener(this); fab1.setOnClickListener(this); fab2.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); switch (id){ case R.id.fab: animateFAB(); break; case R.id.fab1: Log.d("p30droid", "Fab 1"); break; case R.id.fab2: Log.d("p30droid", "Fab 2"); break; } } public void animateFAB(){ if(isFabOpen){ fab.startAnimation(rotate_backward); fab1.startAnimation(fab_close); fab2.startAnimation(fab_close); fab1.setClickable(false); fab2.setClickable(false); isFabOpen = false; Log.d("p30droid", "close"); } else { fab.startAnimation(rotate_forward); fab1.startAnimation(fab_open); fab2.startAnimation(fab_open); fab1.setClickable(true); fab2.setClickable(true); isFabOpen = true; Log.d("p30droid","open"); } } }
  19. Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); view.setImageBitmap(bitmap);
  20. باید بصورت blob ذخیره کنید تصویر رو توی دیتابیس sqlite اندروید public class DatabaseHelper extends SQLiteOpenHelper { // Database Version private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "database_name"; // Table Names private static final String DB_TABLE = "table_image"; // column names private static final String KEY_NAME = "image_name"; private static final String KEY_IMAGE = "image_data"; // Table create statement private static final String CREATE_TABLE_IMAGE = "CREATE TABLE " + DB_TABLE + "("+ KEY_NAME + " TEXT," + KEY_IMAGE + " BLOB);"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // creating table db.execSQL(CREATE_TABLE_IMAGE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // on upgrade drop older tables db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE); // create new table onCreate(db); } } و ذخیره تصویر : public void addEntry( String name, byte[] image) throws SQLiteException{ SQLiteDatabase database = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(KEY_NAME, name); cv.put(KEY_IMAGE, image); database.insert( DB_TABLE, null, cv ); } بازیابی تصویر: byte[] image = cursor.getBlob(1); این کلاس هم میتواند به شما میتواند کمک کند public class DbBitmapUtility { // convert from bitmap to byte array public static byte[] getBytes(Bitmap bitmap) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.PNG, 0, stream); return stream.toByteArray(); } // convert from byte array to bitmap public static Bitmap getImage(byte[] image) { return BitmapFactory.decodeByteArray(image, 0, image.length); } }
  21. ورژن اخر جنی موشن رو نصب کنید چون همیشه این مشکلات رو داشته جنی موشن
  22. نام دیتابیس رو خودتون تو برنامه تعیین میکنید که چی باشه. Db Name
  23. کد کلاستون رو بزارید ؟
  24. این مسیر : data/data/YOURPACKAGENAME/databases