day4.28总结_友录_启动页面和联系人页面

一、启动页面


SplashActivity:

public class SplashActivity extends Activity {

RelativeLayout animaContainer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_splash);

initView();

initAnim();

}

/**

* 动画相关

*/

private void initAnim() {  加载动画

Animation anim = AnimationUtils.loadAnimation(this, R.anim.splash_anim);

animaContainer.startAnimation(anim);

// new Handler().postDelayed(new Runnable() {   线程处理

//

// @Override

// public void run() {

// Intent intent = new Intent(SplashActivity.this,MainActivity.class);

// startActivity(intent);

// finish();

// }

// }, 3000);

anim.setAnimationListener(new AnimationListener() {  动画监听器

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationRepeat(Animation animation) {

}

@Override  动画结束后

public void onAnimationEnd(Animation animation) {

Intent intent = new Intent(SplashActivity.this,MainActivity.class);

startActivity(intent);

finish();

}

});

}

/**

* 初始化各种视图

*/

private void initView() {

animaContainer=(RelativeLayout) findViewById(R.id.rl_splash_animcontainer);

}

}

二、ViewPager与Fragment联动


public class MyPagertAdapter extends FragmentPagerAdapter{

List<Fragment> list ;

public MyPagertAdapter(FragmentManager fm) {

super(fm);

list= new ArrayList<Fragment>();

list.add(new CalllogFragment());

list.add(new ContactFragment());

list.add(new SmsFragment());

list.add(new DialpadFragment());

}

public MyPagertAdapter(FragmentManager fm, List<Fragment> list) {

super(fm);                        方便以后拓展

this.list = list;

}

@Override

public Fragment getItem(int pos) {

return list.get(pos);

}

@Override

public int getCount() {

return list.size();

}

}


public class MainActivity extends FragmentActivity implements OnPageChangeListener, OnCheckedChangeListener {

private ViewPager vPager;

private RadioGroup rGroup;

private MyPagertAdapter adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

setListeners();

}

private void setListeners() {

//加入监听器

vPager.setOnPageChangeListener(this);

rGroup.setOnCheckedChangeListener(this);

}

private void initView() {

//初始化

rGroup =(RadioGroup) findViewById(R.id.radioGroup1);

vPager=(ViewPager) findViewById(R.id.pagerId);

adapter=new MyPagertAdapter(getSupportFragmentManager());

//关联适配器

vPager.setAdapter(adapter);

vPager.setCurrentItem(1);    设置开始时默认页面

rGroup.check(rGroup.findViewById(R.id.contact).getId());

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

//滑动页面时,按钮联动

@Override

public void onPageSelected(int pos) {

rGroup.check(rGroup.getChildAt(pos).getId());

}

//点击按钮,页面联动

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

vPager.setCurrentItem(rGroup.indexOfChild(rGroup.findViewById(checkedId)),false);

}                                              false可以取消动画

}

三、查询数据


public class ContactFragment extends Fragment {

private GridView gView;

private List<Contact> contacts;

public ContactFragment() {

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View view  =inflater.inflate(R.layout.fragment_contact, null);

initGridView(view);传一个View,找到字View

setGridView();

return view;

}

private void setGridView() {

gView.setAdapter(new ContactGridAdapter(getActivity(),R.layout.item_contact_gridview,contacts) );

}

private void initGridView(View view) {

gView=(GridView) view.findViewById(R.id.contactGridview);

contacts=new ArrayList<Contact>();

ContentResolver cr1 = getActivity().getContentResolver();

Cursor cursor1 = cr1.query(Contacts.CONTENT_URI, new String[]{Contacts._ID,Contacts.PHOTO_ID}, null, null, null);

while(cursor1.moveToNext()){

Contact contact =new Contact();

contact.set_id(cursor1.getInt(0));

contact.setPhoto_id(cursor1.getInt(1));

ContentResolver cr2 = getActivity().getContentResolver();  获取资源

Cursor cursor2 = cr2.query(Data.CONTENT_URI, new String[]{Data.MIMETYPE,Data.DATA1,Data.DATA15},

Data.RAW_CONTACT_ID+"=?", new String[]{String.valueOf(contact.get_id())}, null);

while(cursor2.moveToNext()){ 两个表联合查询

String mimeType = cursor2.getString(0);

if(mimeType.equals("vnd.android.cursor.item/email_v2")){

contact.setEmail(cursor2.getString(1));

}else if(mimeType.equals("vnd.android.cursor.item/organization")){

contact.setCompany(cursor2.getString(1));

}else if(mimeType.equals("vnd.android.cursor.item/name")){

contact.setName(cursor2.getString(1));

}else if(mimeType.equals("vnd.android.cursor.item/phone_v2")){

contact.setNumber(cursor2.getString(1));

}else if(mimeType.equals("vnd.android.cursor.item/postal-address_v2")){

contact.setAddress(cursor2.getString(1));

}else if(mimeType.equals("vnd.android.cursor.item/photo")){

byte[] bytes = cursor2.getBlob(2);  获取字节数数组

Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);                                      生成BitMap

contact.setPhotoBitmap(bitmap);

}

}

contacts.add(contact);

cursor2.close();

}

Log.i("tag", contacts.toString());

Log.i("tag", contacts.size()+"");

cursor1.close();

}

}

时间: 2024-08-29 18:55:40

day4.28总结_友录_启动页面和联系人页面的相关文章

day4.29总结_友录_设置圆圈和显示联系人的详细信息

一.显示头像 ContactAdapter public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh; if(convertView==null){ convertView = inflater.inflate(R.layout.item_contact_layout, parent,false); vh = new ViewHolder(); vh.ivAvatar = (Imag

day5.03总结_友录_优化(异步和缓存和回调)

一.异步处理和添加监听器回调 YouluUtil public static void asyncGetAllContact2(final Context context,final OnLoadContactsFinishListener listener){                                               传一个监听器 new AsyncTask<Void, Void, List<Contact>>() { @Override pro

10.8 android输入系统_实战_使用GlobalKey一键启动程序

11. 实战_使用GlobalKey一键启动程序参考文章:Android 两种注册.发送广播的区别http://www.jianshu.com/p/ea5e233d9f43 [Android]动态注册广播接收器 http://blog.csdn.net/etzmico/article/details/7317528 Android初学习 - 在BroadcastReceiver中启动Activity的问题 http://blog.csdn.net/cnmilan/article/details/

多线程_创建线程_继承Thread类

public class ThreadDemo {   public static void main(String[] args){         Demo d = new Demo();   d.start();      for(int i = 0;i < 100;i++){      System.out.println("MainThread" + i);   }   } } class Demo extends Thread {   public void run(

图形学_多边形扫描转换_边界标志算法

边界标志算法 1. 对多边形的每一条边进行扫描转换,即对多边形边界所经过的象素作一个边界标志. 2.填充 对每条与多边形相交的扫描线,按从左到右的顺序,逐个访问该扫描线上的象素. 取一个布尔变量inside来指示当前点的状态,若点在多边形内,则inside为真.若点在多边形外,则inside为假. Inside 的初始值为假,每当当前访问象素为被打上标志的点,就把inside取反.对未打标志的点,inside不变. 1 #include "easyx.h" 2 #include &qu

Spring_MVC_教程_快速入门_深入分析

Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com 目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明

sql面试题(学生表_课程表_成绩表_教师表)

sql面试题(学生表_课程表_成绩表_教师表) 原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 建表语句 CREATE TABLE student ( s# INT, sname nvarchar(32), sage INT, ssex nvarchar(8)

基于samba实现win7与linux之间共享文件_阳仔_新浪博客

基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.

基本数据类型(字符串_数字_列表_元祖_字典_集合)

基本数据类型(字符串_数字_列表_元祖_字典_集合) 1.字符串 2.数字 除了布尔类型外,int.long.float和complex都可以使用的运算为:加.减.乘.除.整除.幂运算和取余 3.列表和元组 列表的内容可变,可以包含任意对象,使用中括号表示.元组的内容不可变,可以包含任意对象,使用圆括号表示.元组 1 l = [1, 2, 3, '4', '5'] # 列表 2 l = list((1, 2, 3, '4', '5')) 3 4 t = (1, 2, 3, '4', '5') #