ISS ico is a complete Initial Coin Offering with Crypto Currency System Platform Developed with Laravel. Our system is 100% Secure, 100% Responsive and 100% Dynamic. Support Overall All cryptocurrency wallet including Token Offering, Affiliation system, Peer to Peer Coin Transfer, Roadmap,Team, Testimonial dynamic landing page & what you need. It is the most perfect platform for create your own currency system.
'ISS ICO' is bundled with files:
Database is used to store all of ISS ICO data such as accounts of users and administrators, ico, wallets, referrals etc. It is important to create an empty database before starting with ISS ICO installation. So let's create an empty database first.
In first step provide the name of you database and click on Next button.
In second step, provide name for database user and also create a password for database. Once you are done, click on Next button to proceed to next step.
In third step, Make sure to click on All Privileges and click on Next button to proceed to final step. Once you click on Next button, your database will be created and you will get a confirmation message on screen. Please do not forget to note database name, database username and database password to use it during installation.
Now go to phpmyadmin, click the import option then select your database and upload the database file
After importing your database you see your table list
Now go to file manager
Version 1.0 ( February 2019 )
Thank you for purchasing my app. If you have Created: 09/11/2018 any questions that are beyond the scope of this By: iTechTheme help file, please feel free to email via my user Email: [email protected] page contact form
https://codecanyon.net/user/cdibrandstudio
Thanks so much!
Android provides a straightforward XML vocabulary that corresponds to the View classes and subclasses, such as those for widgets and layouts. You can also use Android Studio's Layout Editor to build your XML layout using a drag-and drop interface.
Now if you want to edit any layout you may do this by drag and drop or by writing xml code.
Here in below one text input field is presented as example. In android the text input field name is “EditText”
<!-->email input field<-->
<EditText
android:id="@+id/et_email"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00000000"
android:hint="Email"
android:paddingLeft="10dp"
android:textColor="@color/color_place_text"
android:textColorHint="@color/color_place_holder" />
In android there are few size measurement available. Here we have used dp
(Dot pixel).In android if you want to give a view’s width or height to full then you have to use match parent or if you want to make the text view’s height or width as text view’s needs then you have to use wrap content.
Now suppose you want to customize this text view then follow this-
Here – the size is measured by dp (Dot Pixel)
There are 5 packages in this project. The java classes are divided into some packages. They are-
In this package the following classes are present-
Splash screen is the first screen of this project. Initially it will show only for 4 seconds and then the login screen will be opened or the main screen will be opened if previously logged in. Basically in splash screen the company logo or banner is shown. To change the time duration of this screen follow below-
/**
* handler for showing splash screen for 4 seconds and after then finishing this activity and staring the login activity
*/
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
/**
* finishing this activity after 4 seconds
*/
finish();
/**
* starting login activity after 4 seconds
*/
startActivity(new Intent(SplashActivity.this, AuthActivity.class));
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}
}, 4000);//this will finish after 4 seconds
Here a handler is used to do this job. Handler will run its method after 4 seconds (4000 MS) and then first it will finish this activity and then will check for login status and if true will start the main activity otherwise start the login activity. To change the duration just change “4000” to your desired milliseconds. (1 second = 1000 MS). To change the company logo or background image. You will find a layout on this location res/layout/activity_splash.xml and to edit this follow layout (XML) structures.
We used this activity for placing LogInFragment, RegisterFragment and ForgotPasswordFragment, we used this activity for those fragments. User will switch between those fragments for LogIn, Register, and getting password back.
We have just used fragment transaction for replacing fragments.
/**
*replace fragment by a new fragment called fragment transaction
* @param fragment
*/
public void fragmentTransaction(Fragment fragment) {
/*if current fragment is LogInFragment then hide back button else show back button*/
if (fragment instanceof LogInFragment) {
btn_back.setVisibility(View.GONE);
} else {
btn_back.setVisibility(View.VISIBLE);
}
/*assign fragment to the global fragment variable */
this.fragment = fragment;
/*replace fragment with FragmentTransaction Object*/
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.auth_container, fragment);
fragmentTransaction.commit();
}
The above codes do the transaction of fragments by replacing current fragment with a new fragment.
When the user will press back button, we will bring him back to the previous fragment.
/**
*called when user press back button
*/
@Override
public void onBackPressed() {
/*if current fragment is Register Fragment then come back to log in fragment*/
if (fragment instanceof RegisterFragment) {
fragmentTransaction(new LogInFragment());
} else if (fragment instanceof LogInFragment) {
/*if current fragment is log in fragment then exit the app */
finish()
}
}
This is the MainActivity for showing all the fragments without auth fragments, we mainly have a custom top panel formally known as Toolbar tough we didn’t used a default toolbar of Android. In the toolbar we have a title and search and setting button.
Then we have a bottom menu section with a middle button, hint: we didn’t used a default BottomNavigationBar for the bottom menu list.
We just used custom menu section with bottomSection by using LinearLayout. See the below code how we handled the clicks of the menu buttons.
/**
* this function sets functionality to bottom menu
*/
private void BottomMenuSelectorBuilder() {
/*click listener to home menu*/
mnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*change container bottom margin to 0 if have 50*/
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) frameLayout.getLayoutParams();
if (layoutParams.bottomMargin > 50) {
layoutParams.setMargins(0, 0, 0, (int)
Util.DpToPx(DashboardActivity.this, 0));
frameLayout.setLayoutParams(layoutParams);
}
/*fragment transition*/
FragmentTransaction(new HomeFragment());
/*chane title*/
dash_title.setText("Home");
/*check buy coin state*/
if (!(Boolean) buyCoin.getTag()) {
buyCoin.setTag(true);
BuyCoinBuyState();
}
/*onw*/
ic_Home.setImageResource(R.drawable.ic_home_hover);
/*other*/
ic_user.setImageResource(R.drawable.ic_user);
ic_reffer.setImageResource(R.drawable.ic_refferal);
ic_wallet.setImageResource(R.drawable.ic_wallet);
}
});
/*click listener for refer menu*/
mnReffer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*onw*/ /*click listener for user menu*/
mnUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*onw*/
ic_user.setImageResource(R.drawable.ic_user_hover);
/*check buy coin state*/
if (!(Boolean) buyCoin.getTag()) {
buyCoin.setTag(true);
BuyCoinBuyState();
}
/*fragment transaction*/
FragmentTransaction(new UserFragment());
The above codes shows that we are making a click event for every menu button and doing a fragment transaction and changing the title, resizing the container position and more.
We mainly have four menu button in the Dashboard section, those are Home, Wallet, User and Referral. The Home section have some, a viewpager containing a set of fragments like About, Roadmap, Team and Token. Home section Top panel is containing ISS ICO Start time and iSS ICO End time. Then we have a very custom and cool tab layout for the view pager section.
In this package the following classes are present-
This is the adapter for the Home fragment, for browsing the fragments list for Home, This includes About, Token, RoadMap and Team. For those fragment horizontally scrolling we have used viewpager. And to use viewpager, we build this adapter class. Here we have a Fragments list and a Title list for the fragments. We will use the title list to bind the tab layout, for showing the right title for the selected fragment.
/**
* add fragment and title to the list
* @param fragment
* @param title
*/
public void addFragment(Fragment fragment, String title) {
fragmentList.add(fragment);
titles.add(title);
}
/**
*return the title for the current fragment
* @param position
* @return
*/
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
/**
*return the fragment list size
* @return
*/
@Override
public int getCount() {
return fragmentList.size();
}
ffff
In the above codes we have addFragment(), getPagerTitle and getCount() function. The addFragment() function takes Fragment and a title as parameter for adding fragment and title to fragment and title list.
Secondly we have getPageTitle function that takes the position of the adapter and returns the title for that fragment.
We also have a getCount() function that’s return the size of the adapter.
This is the adapter for showing the list of user who have registered by my referral link.
The list shows the Username, Joining Date and Balance of the user. We used a recyclerview for showing the list.
For this recycler view we have 3 types of row. Header, Footer and Regular type. The Header row shows the Username, Joining Date and Balance as title. Regular types row show every user data and footer row also shows data but without the bottom line.
/**
* return the current row type from the position
* in our case the first row is the header
* last row is the footer
* and rest of the rows are regular
* @param position
* @return
*/
@Override
public int getItemViewType(int position) {
if (position == 0) {
return HEADER_TYPE;
} else if (position == 4) {
return FOOTER_TYPE;
} else {
return REGULAR_TYPE;
}
}
In the above codes we have checked the row type, as the first row is Header row, and the last row is footer row and rest rows are regular type’s row.
@NonNull
@Override
public ReferHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == REGULAR_TYPE) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.refer_row, parent, false);
return new ReferHolder(view);
} else if (viewType == FOOTER_TYPE) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.refer_footer_row, parent, false);
return new ReferHolder(view);
} else if (viewType == HEADER_TYPE) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.refer_header_row, parent, false);
return new ReferHolder(view);
}
return null;
}
The above codes has a function onCreateViewHolder() that takes a ViewGroup, and row type in int as param and returns the ViewHolder as output.
In this function we will check the row type and will inflate the layout for that row. We have different row for different type of row.
This is a recycler view adapter for showing the tags for about fragment. In the about section we have some description with some tags, we need this adapter to show the tag list for the section. To show the tag list we need different colors for different rows and we need to show the list horizontally.
We have functions like onBindViewHolder, onCreateViewHolder that a regular recyclerview has.
/**
* binding data to every row
* we have a random number generator that is getting int value from 0 to 4 for every different value we are setting different color to each row
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(@NonNull TagHolder holder, int position) {
holder.tagText.setText(tags.get(position));
switch (randomColor()) {
case 0:
holder.tagBackground.setCardBackgroundColor(context.getResources().getColor(R.colo r.one))
break;
case 1:
holder.tagBackground.setCardBackgroundColor(context.getResources().getColor(R.color.two));
break;
case 2:
holder.tagBackground.setCardBackgroundColor(context.getResources().getColor(R.colo r.three));
break;
case 3:
holder.tagBackground.setCardBackgroundColor(context.getResources().getColor(R.colo r.four));
break;
case 4:
holder.tagBackground.setCardBackgroundColor(context.getResources().getColor(R.colo r.five));
break;
}
}
In the above codes, we have onBindViewHolder function where mainly happens databinding for every row. Here we did a trick to show different colors for different row. We just generated a random number and for different value of the random number we have set different color for the every row by seting cardBackground color of cardview.
This adapter is showing the team list, in the team there must be the team members. We have a custom layout for the team list we just used a reyclerview for inflating the layout for every row.
@NonNull
@Override
public TeamHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.team_recycler_row, parent, false);
return new TeamHolder(view);
}
The above codes are for inflating the layout for every row.
*/
@Override
public void onBindViewHolder(@NonNull TeamHolder holder, int position) {
}
The above function, is for binding the data with every row.
This recycler adapter is for showing the wallet list, this list is in the wallet Fragment section. And this we have used StaggaredGridLayout Manager for showing the list row in different sizes and with different color. And the last row of the list is an AddWallet row this row will get the user to the AddWallet Fragment.
// wallet_recycler.setHasFixedSize(true);
/*set options to recycler view */
StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
gridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEM S_BETWEEN_SPANS);
wallet_recycler.setLayoutManager(gridLayoutManager);
wallet_recycler.setNestedScrollingEnabled(false);
/*make adapter for recycler view */
WalletRecyclerAdapter walletRecyclerAdapter = new WalletRecyclerAdapter(getActivity());
/*set the adapter to recycler view */
wallet_recycler.setAdapter(walletRecyclerAdapter);
The above codes shows the option set for the wallet Recycler view.
/**
* get the current view type by position
* the last position row is a AddWalletType and rests are Regular type
* @param position
* @return
*/
@Override
public int getItemViewType(int position) {
if (position == WalletList.size() - 1) {
return TYPE_ADD_WALLET;
} else {
return TYPE_REGULAR;
}
}
The above codes shows a function named getItemViewType that takes the position of the row and return he type of the row. As we know that last row of the list is the addWallet row and rest of the rows are regular type’s row.
/*class for making the custom WalletHolder by extending view holder*/
class WalletHolder extends RecyclerView.ViewHolder {
/*all views instances*/
TextView walletBalance, walletType, walletName;
LinearLayout wallet_background;
CardView wallet_card;
public WalletHolder(View itemView) {
super(itemView);
/*type casting all the views*/
walletBalance = itemView.findViewById(R.id.wallet_balance);
walletName = itemView.findViewById(R.id.wallet_name);
walletType = itemView.findViewById(R.id.wallet_type);
wallet_card = itemView.findViewById(R.id.wallet_card);
wallet_background = itemView.findViewById(R.id.wallet_background);
}
}
/*class for making the custom WalletHolder by extending view holder*/
class AddWalletHolder extends RecyclerView.ViewHolder {
/*all views instances*/
TextView addWallet;
CardView walletCard;
public AddWalletHolder(View itemView) {
super(itemView);
/*type casting all the views*/
walletCard = itemView.findViewById(R.id.add_new_wallet_card);
addWallet = itemView.findViewById(R.id.add_new_wallet);
/*click listener for the AddWalletRow*/
walletCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*replace the current set fragment by AddWalletFragment in DashboradActivity*/
((DashboardActivity) context).FragmentTransaction(new AddWalletFragment());
}
});
}
}
The above two viewholder classes are for holding the views of the customs layouts and also have the type casting of the views and has click listener event for the AddWallet button.
In this package we have all the fragments of this project.
Following are important points about fragment −
This involves number of simple steps to create Fragments.
/**
* fragment lifecycle method for inflating the layout for this fragment
* @param inflater
* @param container
@param savedInstanceState
* @return
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_about, container, false);
}
/**
* fragment lifecycle method called after fragment is attached to a activity all view type casting and data binding will do here
* @param savedInstanceState
*/
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
/*view type casting*/
initView();
RecyclerViewBuilder();
}
This fragment shows Token name, Whitelist and KYC and country name and Some description about the ICO with some dynamic tags.
This fragment is for adding new Wallet, this fragment contains 2 inputs section wallet address and wallet name. Also have a file picker for uploading file with wallet. And a submit button.
This is the fragment that is triggered with the click with the big middle button of bottom section. This fragment comes in state with a slide up animation and goes through with slide down animation. This fragment have 2 inputs section BTC amount and wallet address for buying token. And a button Withdraw Now.
This fragment is for depositing amount in the wallet, have currency, Select Bank, amount, total fees, and total amount input section with a deposit button.
This fragment is for showing the about the ISS ICO, this fragment contains a ICO starting time, ICO Ending time and a view pager for showing some nested fragments by scrolling horizontally the nested fragments are About, Token, Roadmap and Team.
This fragment show the functionally for log in feature like Email and password input section with log in button and 3rd party log in options like Facebook and Twitter.
This fragment is showing the url of referral of the user and also the list of the registered user list who have registered with the url.
This fragment is for the user where they can register as a new member. Those includes Name, Email, and Password and Phone number. Also have 3rd party registering options like Facebook and Twitter.
This fragment shows a list of plan that are executing and will be executed for this ICO and show along with date and description.
This fragment has the option for the app. Like user can on or off notifications, lock the profile or make him/her profile public etc.
This fragment shows the list of the employees working for the ICO and also show along with his/her image, name and position.
This fragment show the value of BTC raised, Worth of the coin and also a pie graph for showing distribution of Token.
This fragment shows the details of the user, it’s being the place for the profile holder, he/she can see his/her details like, Name, Email, password etc.
This fragment have a list scattered list for showing coins and there balance in the wallet like BTC, TCN , USD and also user can go to AddWallet, Deposit and Withdraw Fragment from here.
This fragment is for withdrawing balance from wallet to bank and have input section such as Deposit fragment.
This package contains classes that are helping other classes by providing some functionality.
This class is for formatting value for the pie graph. We don’t wants to show decimal value in pie chart. So we just formatted the decimal value into integer value by overriding the getFormattedValue of IVValueForamatter interface.
This class is for overriding the statusbar of Android, we wanted to change the statusbar with image we can only do it after lolypop.
This class have functions that are mainly utility functions like, convert DP to Pixel, getFileNameFromUri, and also have copyToClipboard function.
This package have mainly Pojo classes, we have just one pojo class that is Wallet
There is a folder named “Drawable” which contains the all resources in this project. So there you will find your all necessary resources. Now if you want to change the app logo then just put the logo image file in the drawble folder and then just follow below – There is a file called manifest.xml. You have to edit this file to change your app name or app logo.
<application
android:allowBackup="true"
android:icon="@drawable/app_logo"
android:label="ISS ICO"
android:roundIcon="@drawable/app_logo"
android:supportsRtl="true"
android:theme="@style/AppTheme">
In manifest.xml file there is a tag named “application” .In application tag change this line “android:icon="@drawable/app_icon” to “android:icon="@drawable/your app logo name without extension”. As like that if you want to change your app name then just set your app name on android:label=”your app name”. If you want to change your app package name then you have to refactor the package name and clean build the project. To do this just follow below –
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.coin.cdi ">
In manifest file there is a section named “package”. You have to change the package name there .Just right click on mouse on the each portion on behalf of “.”, then there you will found refactor option and then select refactor and then another list will open. There you will found rename option. Select rename and then another dialog will be pop up. There change
the package name to your desired one and check all check boxes and click on refactor. Wait some moments. Then the package name will be changed to your desired one.
We’ve used just one libraries in this project. The important library is
(de.hdodenhof:circleimageview:2.2.0)
For making imageview circular
Again, thank you for purchasing ISS-ICO. If you need some help, or support please use email or contact form via codecanyon Profile site.
Hope you happy with the iss-ico system, all the best with your business.
Copyright © 2019 ico