Android 社交娱乐聊天APP

来源:互联网 发布:摄像头录制软件 编辑:程序博客网 时间:2024/04/27 14:49
Android 社交娱乐聊天APP


个人对Android的app开发比较感兴趣, 但公司一直没有机会(工作已经N年了,一直都是从事后台服务器的开发),这次利用春节假期,学习了一下Android的开发,
并且打算利用业余时间做了一个类似社交娱乐的APP,目前前正在做界面(),Server端还在设计当中准备开始写,后面会给大家共享来,

不多说了,来看部局和代码,因为代码和部局比较多,就不一一列出来了,有兴趣的同学可以联系。

或从http://download.csdn.net/detail/vernal_man01/9433544下载。


启动页页的部局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:gravity="bottom" 
    android:background="@drawable/start_flash_background">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/welcome_subject" />


</RelativeLayout>


Class文件:
public class FlashStart extends Activity {
private static final long animationDurationTime = 3000l;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
final View view = View.inflate(this, R.layout.flash_start, null);
setContentView(view);

//create animation
AlphaAnimation aa = new AlphaAnimation(0.3f, 1.0f);
aa.setDuration(animationDurationTime);
view.startAnimation(aa);

aa.setAnimationListener(new AnimationListener(){


public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
redirectTo();
}


public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub

}


public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub

}

});
}

private void redirectTo()
{
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}


}




主界面的部局文件:
activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <FrameLayout
        android:id="@+id/main_content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />


    <RadioGroup
        android:id="@+id/funny_tab_menu"
        android:layout_width="fill_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/funny_buttom_bar"
        android:orientation="horizontal" >


        <RadioButton
            android:id="@+id/funny_first_page"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:layout_gravity="center_horizontal|center_vertical"
            android:button="@null"
            android:checked="true"
            android:gravity="center_horizontal|center_vertical"
            android:paddingTop="2dp"
            android:paddingLeft="2dip"
            android:text="首页"
            android:textColor="@drawable/tab_selector_tv_color" />


        <RadioButton
            android:id="@+id/funny_chatting_room"
            android:layout_width="67dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_marginLeft="0dip"
            android:layout_marginRight="0dip"
            android:button="@null"
            android:gravity="center_horizontal|center_vertical"
            android:paddingLeft="0dip"
            android:paddingTop="5dp"
            android:text="聊天室"
            android:textColor="@drawable/tab_selector_tv_color" />


        <RadioButton
            android:id="@+id/funny_address_book"
            android:layout_width="65dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:button="@null"
            android:gravity="center_horizontal|center_vertical"
            android:paddingLeft="0dip"
            android:paddingTop="5dp"
            android:text="通讯录"
            android:textColor="@drawable/tab_selector_tv_color" />


        <RadioButton
            android:id="@+id/funny_find"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:layout_gravity="center_horizontal|center_vertical"
            android:button="@null"
            android:gravity="center_horizontal|center_vertical"
            android:paddingTop="5dp"
            android:paddingLeft="0dip"
            android:text="发现"
            android:textColor="@drawable/tab_selector_tv_color" />


        <RadioButton
            android:id="@+id/funny_personal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:layout_gravity="center_horizontal|center_vertical"
            android:button="@null"
            android:gravity="center_horizontal|center_vertical"
            android:paddingTop="5dp"
            android:paddingLeft="0dip"
            android:text="个人"
            android:textColor="@drawable/tab_selector_tv_color" />
    </RadioGroup>


</RelativeLayout>


MainActivity的类文件:
public class MainActivity extends FragmentActivity implements OnClickListener {


/* private Button btnAddressBook; */
private RadioGroup radioGroupFunny;
private Fragment fragmentMainPanel;
private Fragment fragmentAddressBook;
private Fragment fragmentChattingList;
FragmentManager fragmentManager;
private FragmentTransaction transaction;
private static String FRAGMENTTAG_MAIN_PANEL="fragmenttag_main_panel";
private static String FRAGMENTTAG_ADDRESS_BOOK="fragmenttag_address_book";
private static String FRAGMENTTAG_CHATING_LIST="fragmenttag_chating_list";


@Override
public void onCreate(Bundle savedInstanceState) {


if (savedInstanceState != null) {
fragmentMainPanel = (MainPanel) fragmentManager
.findFragmentByTag("allFrg");
fragmentAddressBook = (AddressBookFragment) fragmentManager
.findFragmentByTag("movieFrg");
fragmentChattingList = (ChattingListFragment) fragmentManager
.findFragmentByTag("newsFrg");
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getSupportFragmentManager();


initiateView();


}


private void initiateView() {
/* btnAddressBook.setOnClickListener(this); */
/*
* fragmentAddressBook = new AddressBookFragment(); fragmentChattingList
* = new ChattingListFragment();
*/


try {
fragmentAddressBook = (AddressBookFragment) ObjectsUtilities
.createObject(AddressBookFragment.class,
fragmentAddressBook);


fragmentChattingList = (ChattingListFragment) ObjectsUtilities
.createObject(ChattingListFragment.class,
fragmentChattingList);


} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


transaction = fragmentManager.beginTransaction();
fragmentMainPanel = new MainPanel();


transaction.add(R.id.main_content, fragmentMainPanel,FRAGMENTTAG_MAIN_PANEL);
transaction.show(fragmentMainPanel).commit();


radioGroupFunny = (RadioGroup) findViewById(R.id.funny_tab_menu);


radioGroupFunny
.setOnCheckedChangeListener(new OnCheckedChangeListener() {


public void onCheckedChanged(RadioGroup group, int checkedId) {
transaction = getSupportFragmentManager()
.beginTransaction();
switch (checkedId) {
case R.id.funny_first_page:
hideFragments();
transaction.show(fragmentMainPanel);
/**
* 用replace()方法来替换Fragment。
* 每次切换的时候Fragment都会重新实列化,重新加载一次数据,
* 这样做会非常消耗性能用用户的流量。
*/
/*
* getSupportFragmentManager() .beginTransaction()
* .replace(R.id.main_content,
* fragmentMainPanel).commit();
*/
break;
case R.id.funny_chatting_room:
hideFragments();
if (!fragmentChattingList.isAdded()) {
transaction.add(R.id.main_content,
fragmentChattingList,FRAGMENTTAG_CHATING_LIST);
}
transaction.show(fragmentChattingList);
break;
/*
* getSupportFragmentManager() .beginTransaction()
* .replace(R.id.main_content,
* fragmentChattingList).commit();
*/
case R.id.funny_address_book:
hideFragments();
if (!fragmentAddressBook.isAdded()) {
transaction.add(R.id.main_content,
fragmentAddressBook,FRAGMENTTAG_ADDRESS_BOOK);
}
transaction.show(fragmentAddressBook);
/*
* getSupportFragmentManager() .beginTransaction()
* .replace(R.id.main_content,
* fragmentAddressBook).commit();
*/
break;
case R.id.funny_find:


break;
case R.id.funny_personal:


break;
default:
break;
}
transaction.commit();
}
});
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}


public void onClick(View v) {
// TODO Auto-generated method stub


}


private void hideFragments() {
if (fragmentMainPanel != null) {
getSupportFragmentManager().beginTransaction()
.hide(fragmentMainPanel).commit();
}
if (fragmentAddressBook != null) {
getSupportFragmentManager().beginTransaction()
.hide(fragmentAddressBook).commit();
}
if (null != fragmentChattingList) {
getSupportFragmentManager().beginTransaction()
.hide(fragmentChattingList).commit();
}


}


}


通信录页面:
页面部局文件(address_book.xml):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >


    <RelativeLayout
        android:id="@+id/address_book_head_layout"
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:background="@drawable/title_bar"
        android:gravity="center_vertical" >


        <TextView
            android:id="@+id/address_book_title"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dip"
            android:text="通信录"
            android:textColor="#fff"
            android:textSize="14sp" />


        <ImageButton
            android:id="@+id/search_btn"
            android:layout_width="67dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="5dp"
            android:alpha="255"
            android:background="@drawable/address_book_search_bg" />
    </RelativeLayout>


    <ListView
        android:id="@+id/address_book_listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/address_book_head_layout"
        android:cacheColorHint="#0000"
        android:divider="@color/black"
        android:dividerHeight="1dp"
        android:scrollbarStyle="outsideOverlay" />


</RelativeLayout>


address_book_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageView android:id="@+id/family_icon"
        android:layout_width="64dp"
        android:paddingLeft="8dip"
        android:paddingRight="8dip"
        android:paddingTop="8dip"
        android:layout_height="64dp"/>
    <TextView
        android:id="@+id/family_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|left" />


</LinearLayout>




做的过程中遇到的最大问题是:
1.在fragment切换时会出现两个页面重叠现象,后面从FragmentManager 的replace方法改为.show方法解决.
code:
transaction.show(fragmentMainPanel);
/**
* 用replace()方法来替换Fragment。
* 每次切换的时候Fragment都会重新实列化,重新加载一次数据,
* 这样做会非常消耗性能用用户的流量。
*/
/*
* getSupportFragmentManager() .beginTransaction()
* .replace(R.id.main_content,
* fragmentMainPanel).commit();
*/

主界面



聊天记录:

.


通信录:


1 0
原创粉丝点击