Requirements: -- Android Studio 1.5 or Later
-- smack-core-4.1.4.jar
-- smack-im-4.1.4.jar
-- smack-extensions-4.1.4.jar
-- smack-tcp-4.1.4.jar
Python GUI & Scripts, Nimbuzz Apps and Other Softwares for Windows Desktop, Android Devices, Cross-Platform and more, including source codes [c-sharp , python, java, etc.] just for information purpose only! All apps on this Blog are self-coded, tested and few might be referenced to Thirty Party sources as well. All Source Codes are available at my GitHub: https://github.com/dbh4ck
package com.example.db.nimbuzz_app_tabview_by_db; | |
import android.app.Activity; | |
import android.os.Bundle; | |
import android.os.Handler; | |
import android.support.design.widget.FloatingActionButton; | |
import android.support.design.widget.TabLayout; | |
import android.support.v4.app.Fragment; | |
import android.support.v4.app.FragmentManager; | |
import android.support.v4.app.FragmentStatePagerAdapter; | |
import android.support.v4.view.ViewPager; | |
import android.support.v7.app.AppCompatActivity; | |
import android.support.v7.widget.Toolbar; | |
import android.view.View; | |
public class DbMainTabActivity extends AppCompatActivity { | |
private Handler handler = new Handler(); | |
private dbDialog InfoDialog; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_db_main_tab); | |
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); | |
setSupportActionBar(toolbar); | |
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); | |
tabLayout.addTab(tabLayout.newTab().setText("Profile")); | |
tabLayout.addTab(tabLayout.newTab().setText("Contacts")); | |
tabLayout.addTab(tabLayout.newTab().setText("Chats")); | |
tabLayout.addTab(tabLayout.newTab().setText("Rooms")); | |
tabLayout.addTab(tabLayout.newTab().setText("About")); | |
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); | |
final ViewPager viewPager = (ViewPager) findViewById(R.id.container); | |
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); | |
viewPager.setAdapter(adapter); | |
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); | |
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { | |
@Override | |
public void onTabSelected(TabLayout.Tab tab) { | |
viewPager.setCurrentItem(tab.getPosition()); | |
} | |
@Override | |
public void onTabUnselected(TabLayout.Tab tab) { | |
} | |
@Override | |
public void onTabReselected(TabLayout.Tab tab) { | |
} | |
}); | |
// Dialog for getting the xmpp settings | |
InfoDialog = new dbDialog(this); | |
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); | |
fab.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
//Snackbar.make(view, "Coded By Db~@NC", Snackbar.LENGTH_LONG) | |
//.setAction("Action", null).show(); | |
//Toast.makeText(DbMainTabActivity.this,"Coded By Db~@NC", Toast.LENGTH_LONG).show(); | |
handler.post(new Runnable() { | |
@Override | |
public void run() { | |
InfoDialog.show(); | |
} | |
}); | |
} | |
}); | |
} | |
@Override | |
protected void onStart() { | |
super.onStart(); | |
inst = this; | |
} | |
private static DbMainTabActivity inst; | |
public static Activity instance() { | |
return inst; | |
} | |
public class PagerAdapter extends FragmentStatePagerAdapter { | |
int mNumOfTabs; | |
public PagerAdapter(FragmentManager fm, int NumOfTabs) { | |
super(fm); | |
this.mNumOfTabs = NumOfTabs; | |
} | |
@Override | |
public Fragment getItem(int position) { | |
switch (position){ | |
case 0: | |
ProfileFragment tab1 = new ProfileFragment(); | |
return tab1; | |
case 1: | |
ContactsFragment tab2 = new ContactsFragment(); | |
return tab2; | |
case 2: | |
RealFragment tab3 = new RealFragment(); | |
return tab3; | |
case 3: | |
conferenceFragment tab4 = new conferenceFragment(); | |
return tab4; | |
case 4: | |
AboutDbFragment tab5 = new AboutDbFragment(); | |
return tab5; | |
default: | |
return null; | |
} | |
} | |
@Override | |
public int getCount() { | |
return mNumOfTabs; | |
} | |
} | |
package com.example.db.nimbuzz_app_tabview_by_db; | |
import android.os.Bundle; | |
import android.support.v4.app.ListFragment; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.ArrayAdapter; | |
import android.widget.ListView; | |
import org.jivesoftware.smack.packet.Presence; | |
import org.jivesoftware.smack.roster.Roster; | |
import org.jivesoftware.smack.roster.RosterEntry; | |
import org.jivesoftware.smack.roster.RosterListener; | |
import java.util.ArrayList; | |
import java.util.Collection; | |
public class ContactsFragment extends ListFragment{ | |
Presence presence; | |
public ContactsFragment() { | |
} | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
} | |
String[] FriendList; | |
@Override | |
public View onCreateView(LayoutInflater inflater, ViewGroup container, | |
Bundle savedInstanceState) { | |
if(XMPPLogic.connection.isConnected() && XMPPLogic.connection.isAuthenticated()){ | |
notifyRosterChanged(); | |
Roster roster = Roster.getInstanceFor(XMPPLogic.connection); | |
final ArrayList<String> userlist = new ArrayList<String>(); | |
for (RosterEntry entry : roster.getEntries() ) { | |
userlist.add(entry.getUser()); | |
} | |
String[] mylist = new String[userlist.size()]; | |
for (int i = 0; i < userlist.size(); i++) { | |
mylist[i] = userlist.get(i); | |
} | |
FriendList = mylist; | |
} | |
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, FriendList); | |
setListAdapter(adapter); | |
return super.onCreateView(inflater, container, savedInstanceState); | |
} | |
private void notifyRosterChanged() { | |
Roster roster = Roster.getInstanceFor(XMPPLogic.connection); | |
roster.addRosterListener(new RosterListener() { | |
@Override | |
public void entriesAdded(Collection<String> addresses) { | |
} | |
@Override | |
public void entriesUpdated(Collection<String> addresses) { | |
} | |
@Override | |
public void entriesDeleted(Collection<String> addresses) { | |
} | |
@Override | |
public void presenceChanged(Presence presence) { | |
// DB~@NC WAS ONLINE | |
} | |
}); | |
} | |
@Override | |
public void onListItemClick(ListView l, View view, int position, long id) { | |
// Toast.makeText(getActivity(), "Item:" + position, Toast.LENGTH_SHORT).show(); | |
//FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); | |
//transaction.replace(R.id.fragment_container, new ChatsFragment()); | |
//transaction.addToBackStack(null); | |
//transaction.commit(); | |
} | |
} |
<?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="com.example.db.nimbuzz_app_tabview_by_db.DbMainTabActivity"> | |
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:id="@+id/fragment_container" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:background="#bababa" /> | |
<android.support.design.widget.AppBarLayout | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
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.TabLayout | |
android:id="@+id/tabs" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_below ="@+id/toolbar" /> | |
</android.support.design.widget.AppBarLayout> | |
<android.support.v4.view.ViewPager | |
android:id="@+id/container" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
app:layout_behavior="@string/appbar_scrolling_view_behavior" | |
android:layout_below ="@+id/tabs" /> | |
<include layout="@layout/content_db_main_tab" /> | |
<android.support.design.widget.FloatingActionButton | |
android:id="@+id/fab" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_gravity="center|end" | |
android:layout_margin="@dimen/fab_margin" | |
android:src="@android:drawable/ic_dialog_info" | |
android:clickable="true" | |
/> | |
</android.support.design.widget.CoordinatorLayout> |