Java tutorial
package ir.rasen.charsoo.view.fragment.invite; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.ListView; import com.daimajia.androidanimations.library.Techniques; import com.daimajia.androidanimations.library.YoYo; import com.nineoldandroids.animation.Animator; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.logging.Handler; import ir.rasen.charsoo.R; import ir.rasen.charsoo.controller.helper.Globals; import ir.rasen.charsoo.controller.helper.Params; import ir.rasen.charsoo.controller.object.Business; import ir.rasen.charsoo.controller.object.ContactEntry; import ir.rasen.charsoo.controller.object.MyApplication; import ir.rasen.charsoo.controller.object.PackageInfoCustom; import ir.rasen.charsoo.view.adapter.AdapterInviteFriendsByApp; import ir.rasen.charsoo.view.adapter.AdapterInviteContacts; import ir.rasen.charsoo.view.interface_m.IFragInviteSelectionListener; import ir.rasen.charsoo.view.interface_m.IInviteFriendByAppListener; import ir.rasen.charsoo.view.widgets.buttons.ButtonFont; import ir.rasen.charsoo.view.widgets.charsoo_activity.CharsooActivity; import ir.rasen.charsoo.view.widgets.imageviews.RoundedSquareImageView; /** * Created by hossein-pc on 6/9/2015. */ public class FragmentInviteAppList extends Fragment implements IInviteFriendByAppListener, IFragInviteSelectionListener { public static final String TAG = "FragmentInviteAppList"; public static Context context; Activity parentactivity; public String BODY, body1, body2, body3, body4, body5, body6, body7, body8, Userid, Businessid, Businessname; public String subject; // adapter // TextViewFont persianLicenseTextView,englishLicenseTextView; ArrayList<PackageInfoCustom> applicationList; Hashtable<String, PackageInfoCustom> applicationsHashtable; ListView listViewApplication, listViewEmailContacts; AdapterInviteFriendsByApp listViewAdapter; LinearLayout selectedContactsContainer; ArrayList<ContactEntry> noneCharsooContactList; AdapterInviteContacts noneCharsooEmailContactsAdapter; ButtonFont sendEmailButton; Hashtable<Integer, ContactEntry> selectedContactsToInvite; Hashtable<Integer, Integer> positionMapForSelectedContacts; HorizontalScrollView selectedContactsScrollView; int selectedItemHeight, selectedItemMargin; LinearLayout.LayoutParams params; public CharsooActivity charsooActivityContext; View view; boolean isHidingContactView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_register_user_offer_friends_invite, container, false); context = parentactivity = getActivity(); charsooActivityContext = (CharsooActivity) getActivity(); charsooActivityContext.showWaitDialog(); listViewApplication = (ListView) view.findViewById(R.id.applicationsListView); listViewEmailContacts = (ListView) view.findViewById(R.id.allContactsListView); sendEmailButton = (ButtonFont) view.findViewById(R.id.btn_SendEmail); sendEmailButton.setBackgroundColor(getActivity().getResources().getColor(R.color.primaryColor)); selectedContactsScrollView = (HorizontalScrollView) view.findViewById(R.id.selectedContactsScrollView); selectedContactsContainer = (LinearLayout) view.findViewById(R.id.ll_SelectedContactsContainer); sendEmailButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendEmail(); } }); if (selectedContactsToInvite == null) selectedContactsToInvite = new Hashtable<>(); if (positionMapForSelectedContacts == null) positionMapForSelectedContacts = new Hashtable<>(); if ((applicationList != null) && (noneCharsooContactList != null)) { listViewAdapter = new AdapterInviteFriendsByApp(getActivity(), applicationList, noneCharsooContactList, FragmentInviteAppList.this); listViewApplication.setAdapter(listViewAdapter); } selectedItemHeight = getSizeInPixelFromDp(38); selectedItemMargin = getSizeInPixelFromDp(16); params = new LinearLayout.LayoutParams(selectedItemHeight, selectedItemHeight); params.setMargins(0, 0, selectedItemMargin, 0); isHidingContactView = false; if (!FragmentInvite.isBusinessPromotion) { // matne aslie email // matne invite Userid = ((MyApplication) parentactivity.getApplication()).userIdentifier + "@"; body1 = getActivity().getString(R.string.EMAIL_BODY_1); body2 = getActivity().getString(R.string.EMAIL_BODY_2); body3 = getActivity().getString(R.string.EMAIL_BODY_3); body4 = getActivity().getString(R.string.EMAIL_BODY_4); body5 = " " + Userid + " ."; body6 = getActivity().getString(R.string.EMAIL_BODY_6); body7 = getActivity().getString(R.string.EMAIL_BODY_7); body8 = getActivity().getString(R.string.EMAIL_BODY_8); BODY = body1 + '\n' + body2 + '\n' + body3 + '\n' + body4 + '\n' + body5 + '\n' + body6 + '\n' + body7 + '\n' + body8; subject = ((MyApplication) parentactivity.getApplication()).username + '\n' + " "; } else { // todo: business id & name & sms // matne email = matne 2vom ( kasbo kar ) // Businessid=String.valueOf(business.businessIdentifier)+"@"; Businessid = FragmentInvite.Business_id + "@"; body1 = getActivity().getString(R.string.EMAIL_BODY_1); body2 = getActivity().getString(R.string.EMAIL_FORMAT2_BODY2); body3 = getActivity().getString(R.string.EMAIL_FORMAT2_BODY3); body4 = " " + Businessid + " ."; body5 = getActivity().getString(R.string.EMAIL_BODY_7); body6 = getActivity().getString(R.string.EMAIL_BODY_8); BODY = body1 + '\n' + body2 + '\n' + body3 + '\n' + body4 + '\n' + body5 + '\n' + body6; // Businessname="@"+String.valueOf(business.name); Businessname = FragmentInvite.Business_name; subject = Businessname + '\n' + " ? ."; } return view; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { charsooActivityContext.hideWaitDialog(); if (!selectedContactsToInvite.isEmpty()) { selectedContactsScrollView.setVisibility(View.VISIBLE); positionMapForSelectedContacts = new Hashtable<>(); ArrayList<Integer> keys = new ArrayList<>(selectedContactsToInvite.keySet()); for (Integer i = 0; i < keys.size(); i++) { positionMapForSelectedContacts.put(keys.get(i), i); RoundedSquareImageView r = new RoundedSquareImageView(getActivity()); r.setLayoutParams(params); final int position = keys.get(i); r.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { noneCharsooEmailContactsAdapter.setUncheckedViewAt(position); removeSelectedContact(position); } }); if (selectedContactsToInvite.get(keys.get(i)).contactPhoto != null) { r.setImageBitmap(selectedContactsToInvite.get(keys.get(i)).contactPhoto); } selectedContactsContainer.addView(r); } } } @Override public void onItemClicked(String itemTag) { Intent myIntent; switch (itemTag) { case Params.EMAIL_APP: (view.findViewById(R.id.ll_EmailListContainer)).setVisibility(View.VISIBLE); if (noneCharsooEmailContactsAdapter == null) { noneCharsooEmailContactsAdapter = new AdapterInviteContacts(getActivity(), noneCharsooContactList, FragmentInviteAppList.this); listViewEmailContacts.setAdapter(noneCharsooEmailContactsAdapter); } // startActivity(createEmailIntent("","subject","Body")); // String[] s=new String[]{"mhfathi.charsoo@gmail.com","cemhfathi@gmail.com"}; //// composeEmail(s,"this is subject","this is body"); // myIntent = new Intent(Intent.ACTION_SEND); // myIntent.setType("message/rfc822"); // myIntent.putExtra(Intent.EXTRA_EMAIL, s); // myIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); // myIntent.putExtra(Intent.EXTRA_TEXT, "I'm email body."); // startActivity(Intent.createChooser(myIntent, "Send Email")); break; case Params.SHARE_APP: myIntent = new Intent(Intent.ACTION_SEND); myIntent.setType("text/html"); myIntent.putExtra(Intent.EXTRA_TEXT, BODY);// getActivity().startActivity(Intent.createChooser(myIntent, "Share with")); break; default: myIntent = new Intent(Intent.ACTION_SEND); myIntent.setType("text/plain"); String s2 = applicationsHashtable.get(itemTag).pname; myIntent.setPackage(s2); myIntent.putExtra(Intent.EXTRA_TEXT, BODY);// getActivity().startActivity(Intent.createChooser(myIntent, "Share with")); break; } } public static Intent createEmailIntent(final String[] toEmail, final String subject, final String message) { String emailsString = ""; if (toEmail.length > 0) emailsString = toEmail[0]; for (int i = 1; i < toEmail.length; i++) { emailsString += ","; emailsString += toEmail[i]; } Intent sendTo = new Intent(Intent.ACTION_SENDTO); String uriText = "mailto:" + Uri.encode(emailsString) + "?subject=" + Uri.encode(subject) + "&body=" + Uri.encode(message); Uri uri = Uri.parse(uriText); sendTo.setData(uri); List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentActivities(sendTo, 0); // Emulators may not like this check... if (!resolveInfos.isEmpty()) { return Intent.createChooser(sendTo, "Send Email"); } // Nothing resolves send to, so fallback to send... Intent send = new Intent(Intent.ACTION_SEND); send.setType("message/rfc822"); send.putExtra(Intent.EXTRA_EMAIL, toEmail); send.putExtra(Intent.EXTRA_SUBJECT, subject); send.putExtra(Intent.EXTRA_TEXT, message); return Intent.createChooser(send, "Send Email"); } // public void composeEmail(String[] addresses, String subject,String body) { // Intent intent = new Intent(Intent.ACTION_SEND); // intent.setData(Uri.parse("mailto:")); // only email appNames should handle this // intent.putExtra(Intent.EXTRA_EMAIL, addresses); // intent.putExtra(Intent.EXTRA_SUBJECT, subject); // intent.putExtra(Intent.EXTRA_TEXT,body); // startActivity(Intent.createChooser(intent, "mail to")); // } // @Override // public void setAppResults(ArrayList<PackageInfoCustom> appList) { // setApplicationList(appList); // } private void doOnApplicationListReady() { if (listViewAdapter != null) listViewAdapter.resetItems(applicationList); if (view != null) { if ((applicationList != null) && (noneCharsooContactList != null)) { listViewAdapter = new AdapterInviteFriendsByApp(getActivity(), applicationList, noneCharsooContactList, FragmentInviteAppList.this); listViewApplication.setAdapter(listViewAdapter); } } } public void setApplicationList(ArrayList<PackageInfoCustom> appList) { if (applicationList == null) { applicationList = appList; applicationsHashtable = new Hashtable<>(); for (int i = 0; i < applicationList.size(); i++) { applicationsHashtable.put(applicationList.get(i).appname, applicationList.get(i)); } doOnApplicationListReady(); } } public void setNoneCharsooContacts(ArrayList<ContactEntry> noneCharsooContacts) { noneCharsooContactList = new ArrayList<>(noneCharsooContacts); if (view != null) { if ((applicationList != null) && (noneCharsooContactList != null)) { listViewAdapter = new AdapterInviteFriendsByApp(getActivity(), applicationList, noneCharsooContactList, FragmentInviteAppList.this); listViewApplication.setAdapter(listViewAdapter); } } } private void removeSelectedContact(int itemPosition) { selectedContactsToInvite.remove(itemPosition); int removePosition = positionMapForSelectedContacts.get(itemPosition); selectedContactsContainer.removeViewAt(removePosition); for (int i : positionMapForSelectedContacts.keySet()) { int tempInt = positionMapForSelectedContacts.get(i); if (tempInt > removePosition) { positionMapForSelectedContacts.put(i, tempInt - 1); } } positionMapForSelectedContacts.remove(itemPosition); checkSelectedViewVisibility(); // if (!selectedContactsToInvite.isEmpty()){ // selectedContactsScrollView.setVisibility(View.VISIBLE); // // } // else // { // selectedContactsScrollView.setVisibility(View.GONE); // // } } @Override public void onItemCheckBoxClicked(final int position) { if (selectedContactsToInvite.containsKey(position)) { removeSelectedContact(position); } else { selectedContactsToInvite.put(position, noneCharsooContactList.get(position)); positionMapForSelectedContacts.put(position, selectedContactsContainer.getChildCount()); RoundedSquareImageView r = new RoundedSquareImageView(getActivity()); r.setLayoutParams(params); r.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { noneCharsooEmailContactsAdapter.setUncheckedViewAt(position); removeSelectedContact(position); } }); if (selectedContactsToInvite.get(position).contactPhoto != null) { r.setImageBitmap(selectedContactsToInvite.get(position).contactPhoto); } else { // r.setImageDrawable(selectedContactsToInvite.get(position).contactPhotoDrawable); } selectedContactsContainer.addView(r); selectedContactsContainer.post(new Runnable() { @Override public void run() { selectedContactsScrollView.fullScroll(HorizontalScrollView.FOCUS_RIGHT); } }); // if (!selectedContactsToInvite.isEmpty()){ // selectedContactsScrollView.setVisibility(View.VISIBLE); // // } // else // { // selectedContactsScrollView.setVisibility(View.GONE); // // } } checkSelectedViewVisibility(); } private void checkSelectedViewVisibility() { if (selectedContactsToInvite.isEmpty()) { if (selectedContactsScrollView.getVisibility() == View.VISIBLE) { YoYo.with(Techniques.FadeOutDown).withListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { isHidingContactView = true; } @Override public void onAnimationEnd(Animator animation) { if (isHidingContactView) { selectedContactsScrollView.setVisibility(View.GONE); isHidingContactView = false; } } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }).playOn(selectedContactsScrollView); } } else { if (selectedContactsScrollView.getVisibility() == View.GONE || isHidingContactView) { isHidingContactView = false; YoYo.with(Techniques.FadeInUp).playOn(selectedContactsScrollView); selectedContactsScrollView.setVisibility(View.VISIBLE); } } } private void sendEmail() { // create EMAIL SUBJECT & BODY / Bodu dar oncreate view sakhte shode int size = selectedContactsToInvite.size(); String[] emailsStringArray = new String[size]; ArrayList<Integer> keys = new ArrayList<>(selectedContactsToInvite.keySet()); for (int i = 0; i < size; i++) { emailsStringArray[i] = selectedContactsToInvite.get(keys.get(i)).contactData; } startActivityForResult(createEmailIntent(emailsStringArray, subject, BODY), 12); } public int getSizeInPixelFromDp(int dpToConvert) { Resources r = getResources(); float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpToConvert, r.getDisplayMetrics()); return (int) px; } /*public boolean isEmailListVisible(){ if (view!=null){ return (view.findViewById(R.id.ll_EmailListContainer)).getVisibility()==View.VISIBLE; } else return false; }*/ public boolean ifHideEmailList() { if (view != null) { if ((view.findViewById(R.id.ll_EmailListContainer)).getVisibility() == View.VISIBLE) { (view.findViewById(R.id.ll_EmailListContainer)).setVisibility(View.GONE); return true; } else return false; } else return false; } }