Farzad Sarseifi

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

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

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

  • Days Won

    85

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

  1. عکساتون رو تو فولدر res/mipmap بزارید و اسمش رو تو دیتابیس sqlite ذخیره کنید
  2. پس همینکار رو انجام بدید یک RecyclerView و اداپترش رو بنویسید <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> آداپتر RecyclerView public class TestAdapter extends RecyclerView.Adapter<JuzeAdapter.ViewHolder> { List<Model> modelList = new ArrayList<>(); public JuzeAdapter(Context context, List<Model> data) { modelList = data; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_row, null); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { Model model=modelList.get(position); holder.txt_title.setText(model.getTitle()+""); holder.txt_id.setText(model.getId()+""); } @Override public int getItemCount() { return sureList.size(); } public class ViewHolder extends RecyclerView.ViewHolder { TextView txt_title,txt_id; public ViewHolder(View itemView) { super(itemView); txt_title = (TextView) itemView.findViewById(R.id.txt_title); txt_id = (TextView) itemView.findViewById(R.id.txt_id); } } } اینترفیس کلیک RecyclerView import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; /** * Created by Farzad sarseify on 11/18/2015. */ public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { private OnItemClickListener mListener; private OnItemLongClickListener mLongListener; public interface OnItemClickListener { public void onItemClick(View view, int position); } public interface OnItemLongClickListener { 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; } }); } public RecyclerItemClickListener(Context context, OnItemLongClickListener listener) { mLongListener = 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.getChildAdapterPosition(childView)); } return false; } @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } } رویداد کلیک RecyclerView RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); recyclerView.addOnItemTouchListener( new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { // TODO Handle item click String txt_id=((TextView)view.findViewById(R.id.txt_id)).getText().toString(); Intent intent=new Intent(getActivity(), CustomActivity.class); intent.putExtra("id",txt_id); startActivity(intent); } }) );
  3. چرا میخواهید برای هر آیتم یک holder جدا تعریف کنید؟؟ وظایف هر ایتم چی هستش؟
  4. برای اینکه بخوای همچنین چیزی بسازی فقط یک دیتابیس بساز که یک ستون فیلد تصویر داشته باشه و هر کدوم یک تصویر خاص داشته باشه و مشکلت حل میشه از کلاس PopupWindow برای ساخت پاپ آپ استفاده کن مانند کد زیر private void initiateTranslationPopupWindow(View v) { try { //We need to get the instance of the LayoutInflater, use the context of this activity LayoutInflater inflater = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); //Inflate the view from a predefined XML layout View layout = inflater.inflate(R.layout.fragment_translation, (ViewGroup) v.findViewById(R.id.popup_element)); // create a MATCH_PARENT width and MATCH_PARENT height PopupWindow pw = new PopupWindow(layout, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, true); txt_cancel = (TextView) layout.findViewById(R.id.txt_cancel); // display the popup in the center pw.showAtLocation(v, Gravity.CENTER, 0, 0); } catch (Exception e) { e.printStackTrace(); } }
  5. بله کد شده باید ببیند با چه الگوریتمی کدش کردن مثلا AES رو بررسی کنید
  6. چرا میخواید اینکار رو کنید و ورژن design رو تغییر دهید. چه امکانی رو میخواید توی اندروید ۴ انجام بدید که باعث محدودیت میشه؟
  7. وقتی از کتابخانه Design استفاده میکنید برای اندروید های زیر ۴ مشکلی ندارید و اجرا میشوند منظورتون اینه که فایل Lock شده و قابلیت ویرایش رو نداره؟ اگر همچنین مشکلی داره با Notepad فایل رو باز کنید فایل build.gradle رو دستی ویرایش کنید
  8. public class BackgroundSoundService extends Service { private static final String TAG = null; MediaPlayer player; public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); Log.d("service", "onCreate"); player = new MediaPlayer(); try { player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/your file.mp3"); } catch (IOException e) { e.printStackTrace(); } player.setLooping(true); // Set looping player.setVolume(100, 100); } public int onStartCommand(Intent intent, int flags, int startId) { Log.d("service", "onStartCommand"); try { player.prepare(); player.start(); } catch (IOException e) { e.printStackTrace(); } return 1; } public void onStart(Intent intent, int startId) { // TO DO } public IBinder onUnBind(Intent arg0) { // TO DO Auto-generated method return null; } public void onStop() { } public void onPause() { } @Override public void onDestroy() { player.stop(); player.release(); } @Override public void onLowMemory() { } } Run code snippetCopy snippet to answer Manifest <service name="BackgroundSoundService"/> Activity : startService(new Intent(this,new BackgroundSoundService()));
  9. اینکار اصلا کار درستی نیس.بهتره برای همچنین کاری یک جدول داینامیک جدید ایجاد کنید با تعدادی ستون مشخص
  10. این کد رو بنویسید: import java.text.SimpleDateFormat; import java.util.Date; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView tvDay, tvHour, tvMinute, tvSecond, tvEvent; private LinearLayout linearLayout1, linearLayout2; private Handler handler; private Runnable runnable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initUI(); countDownStart(); } @SuppressLint("SimpleDateFormat") private void initUI() { linearLayout1 = (LinearLayout) findViewById(R.id.ll1); linearLayout2 = (LinearLayout) findViewById(R.id.ll2); tvDay = (TextView) findViewById(R.id.txtTimerDay); tvHour = (TextView) findViewById(R.id.txtTimerHour); tvMinute = (TextView) findViewById(R.id.txtTimerMinute); tvSecond = (TextView) findViewById(R.id.txtTimerSecond); tvEvent = (TextView) findViewById(R.id.tvevent); } // //////////////COUNT DOWN START///////////////////////// public void countDownStart() { handler = new Handler(); runnable = new Runnable() { @Override public void run() { handler.postDelayed(this, 1000); try { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd"); // Here Set your Event Date Date eventDate = dateFormat.parse("2017-12-30"); Date currentDate = new Date(); if (!currentDate.after(eventDate)) { long diff = eventDate.getTime() - currentDate.getTime(); long days = diff / (24 * 60 * 60 * 1000); diff -= days * (24 * 60 * 60 * 1000); long hours = diff / (60 * 60 * 1000); diff -= hours * (60 * 60 * 1000); long minutes = diff / (60 * 1000); diff -= minutes * (60 * 1000); long seconds = diff / 1000; tvDay.setText("" + String.format("%02d", days)); tvHour.setText("" + String.format("%02d", hours)); tvMinute.setText("" + String.format("%02d", minutes)); tvSecond.setText("" + String.format("%02d", seconds)); } else { linearLayout1.setVisibility(View.VISIBLE); linearLayout2.setVisibility(View.GONE); tvEvent.setText("Android Event Start"); handler.removeCallbacks(runnable); // handler.removeMessages(0); } } catch (Exception e) { e.printStackTrace(); } } }; handler.postDelayed(runnable, 0); } // //////////////COUNT DOWN END///////////////////////// } Layout : <LinearLayout 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" > <LinearLayout android:id="@+id/ll1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:background="@drawable/counter_back" android:gravity="center" android:orientation="horizontal" android:visibility="gone" > <TextView android:id="@+id/tvevent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:singleLine="true" android:text="Android Event Start" android:textColor="#fff" android:textSize="24sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/ll2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="10dp" android:background="@drawable/counter_back" android:gravity="center" android:orientation="horizontal" android:visibility="visible" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerDay" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerDay" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Days" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerHour" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerHour" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Hour" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerMinute" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerMinute" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Minute" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerSecond" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerSecond" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Second" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> </LinearLayout> </LinearLayout>
  11. وب ویو یک متد به اسم setPictureListener دارد webView1.setPictureListener(new PictureListener() { public void onNewPicture(WebView view, Picture picture) { if (picture != null) { try { bmp = pictureDrawable2Bitmap(new PictureDrawable( picture)); } catch (Exception e) { e.printStackTrace(); } } } }); برای بدست آوردن Bitmap های داخل متد بالا : private static Bitmap pictureDrawable2Bitmap(PictureDrawable pictureDrawable) { Bitmap bitmap = Bitmap.createBitmap( pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawPicture(pictureDrawable.getPicture()); return bitmap; } کلاس Web view client : public class myWebClient extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); Log.i("OnPageLoadFinished", url); img.setImageBitmap(bmp); } کد ذخیره فایل pdf بر روی SdCard public void SimplePDFTable() throws Exception { File direct = new File(Environment.getExternalStorageDirectory() .getAbsolutePath() + "/P30droid"); if (!direct.exists()) { if (direct.mkdir()) { Toast.makeText(MainActivity.this, "Folder Is created in sd card", Toast.LENGTH_SHORT) .show(); } } String test = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/P30droid"; Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(test + "/mypdf.pdf")); document.open(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); Image image = Image.getInstance(byteArray); image.scaleToFit(PageSize.A4.getHeight(), PageSize.A4.getWidth()); document.add(image); document.close(); }
  12. احتمالا برای context هستش که شاید وجود نداره و ارور میده
  13. این کتابخانه را بررسی کنید
  14. کتابخانه خواندن فایل های Pdf روش راه اندازی : ۱- فایل کتابخانه PdfViewer.jar را در پوشه bin قرار دهید. و از بخش dependency معرفی نمایید ۲=تصاویر زیر را که درون کتابخانه موجود است به ساختار زیر در پروژه خود انتقال دهید: YourProject/res/drawable left_arrow.png right_arrow.png zoom_in.png zoom_out.png ۳- لایوت های زیر را هم به فولدر لایوت پروژه خود انتقال دهید YourProject/res/layout dialog_pagenumber.xml pdf_file_password.xml 4) Derive your PDF activity from net.sf.andpdf.pdfviewer.PdfViewerActivity 5) Using the default drawables and layouts: public int getPreviousPageImageResource() { return R.drawable.left_arrow; } public int getNextPageImageResource() { return R.drawable.right_arrow; } public int getZoomInImageResource() { return R.drawable.zoom_in; } public int getZoomOutImageResource() { return R.drawable.zoom_out; } public int getPdfPasswordLayoutResource() { return R.layout.pdf_file_password; } public int getPdfPageNumberResource() { return R.layout.dialog_pagenumber; } public int getPdfPasswordEditField() { return R.id.etPassword; } public int getPdfPasswordOkButton() { return R.id.btOK; } public int getPdfPasswordExitButton() { return R.id.btExit; } public int getPdfPageNumberEditField() { return R.id.pagenum_edit; } 6) Invoke your PdfViewActivity derived with the following code: Intent intent = new Intent(this, YourPdfViewerActivity.class); intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, "PATH TO PDF GOES HERE"); startActivity(intent); دریافت از انجمن اندروید ایران Android-Pdf-Viewer-Library-master.zip لینک رسمی محصول : https://github.com/jblough/Android-Pdf-Viewer-Library
  15. https://developer.android.com/google/play/expansion-files.html
  16. کدتون رو دیباگ کنید که مشکل رو بتونید پیدا کنید.و لاگ ارور رو بزارید
  17. Sqlite Expert رو نصب کنید
  18. این کدایی که براتون نوشتم که در دیتابیس ذخیره نمیشود شما وقتی میخواهید کنترل داینامیک ایجاد کنید باید از دیتابیستون query بگرید و براساس سایز ارایه تون کنترل بسازید و هر ویجت حتما باید یک ID منحصر بفرد داشته باشد .تمام اینکارا رو براتون نوشتم که کنترل ساخته بشه با ID منحصر بفرد
  19. کلاس زیر رو ایجاد کنید و فقط شما باید اسم دیتابیس رو با نام دیتابیس خودتون تغییر دهید متغیر DB_NAME import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.annotation.SuppressLint; 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.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseAssets extends SQLiteOpenHelper { String DB_PATH = null; private static String DB_NAME = "database.db"; public static final String TABLE_App = "Tbl_Apps"; // TABLE_CONTENT private SQLiteDatabase myDataBase; private final Context myContext; /** * Constructor Takes and keeps a reference of the passed context in order to * access to the application assets and resources. * * @param context */ @SuppressLint("SdCardPath") public DatabaseAssets(Context context) { super(context, DB_NAME, null, 1);//1 is database version this.myContext = context; // DB_PATH = "/data/data/" + context.getPackageName() + "/" + // "databases/"; DB_PATH = "/data/data/" + myContext.getPackageName() + "/" + "databases/"; } /** * Creates a empty database on the system and rewrites it with your own * database. * */ public void createDataBase() throws IOException { boolean dbExist = checkDataBase(); if (dbExist) { // do nothing - database already exist } else { // By calling this method and empty database will be created into // the default system path // of your application so we are gonna be able to overwrite that // database with our database. this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } private boolean checkDataBase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY); } catch (SQLiteException e) { // database does't exist yet. } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } /** * Copies your database from your local assets-folder to the just created * empty database in the system folder, from where it can be accessed and * handled. This is done by transfering bytestream. * */ public void copyDataBase() throws IOException { // Open your local db as the input stream InputStream myInput = myContext.getAssets().open(DB_NAME); // Path to the just created empty db String outFileName = DB_PATH + DB_NAME; // Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName); // transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } // Close the streams myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLException { // Open the database String myPath = DB_PATH + DB_NAME; // SQLiteDatabase.NO_LOCALIZED_COLLATORS myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY); } @Override public synchronized void close() { if (myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } برای کپی کردن دیتابیس باید از کلاس DatabaseAssets یک new کنید و متد createDatabase() را صدا بزنید DatabaseAssets db=new DatabaseAssets(getApplicationContext()); db.createDataBase()
  20. از این کلاس استفاده کنید برای کپی کردن دیتابیس : DatabaseAssets.java
  21. شما باید Dynmic View ایجاد کنید private void createLayoutDynamically(int n) { for (int i = 0; i < n; i++) { Button myButton = new Button(this); myButton.setText("Button :"+i); myButton.setId(i); final int id_ = myButton.getId(); LinearLayout layout = (LinearLayout) findViewById(R.id.myDynamicLayout); layout.addView(myButton); myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(DynamicLayout.this, "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); }
  22. اگر خطای شما از java.lang.OutOfMemory هستش این میتونه کمکتون کنه /** * Checks if a bitmap with the specified size fits in memory * @param bmpwidth Bitmap width * @param bmpheight Bitmap height * @param bmpdensity Bitmap bpp (use 2 as default) * @return true if the bitmap fits in memory false otherwise */ public static boolean checkBitmapFitsInMemory(long bmpwidth,long bmpheight, int bmpdensity ){ long reqsize=bmpwidth*bmpheight*bmpdensity; long allocNativeHeap = Debug.getNativeHeapAllocatedSize(); final long heapPad=(long) Math.max(4*1024*1024,Runtime.getRuntime().maxMemory()*0.1); if ((reqsize + allocNativeHeap + heapPad) >= Runtime.getRuntime().maxMemory()) { return false; } return true; } مثال : BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); bmpFactoryOptions.inJustDecodeBounds=true; BitmapFactory.decodeFile(path,bmpFactoryOptions); if ( (runInSafeMemoryMode()) && (!Manager.checkBitmapFitsInMemory(bmpFactoryOptions.outWidth, bmpFactoryOptions.outHeight, 2)) ){ Log.w(TAG,"Aborting bitmap load for avoiding memory crash"); return null; }
  23. میتونید به سازنده اپلیکیش هایی که کاربران زیادی دارند ایمیل بزنید و مکاتبه کنید
  24. Log ارور رو میزارید؟
  25. import java.util.Random; public class RandArray { private int[] items = new int[]{1,2,3}; private Random rand = new Random(); public int getRandArrayElement(){ return items[rand.nextInt(items.length)]; } } این یک ارایه int میباشد اونو String کنید مشکلتون حل میشه