Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式

Fragment

FragmentManager fragmentManager = getFragmentManager();FragmentTransaction beginTransaction = fragmentManager.beginTransaction();

事务

add(),remove(),replace(),commit()

MyFragment2 fragment2=new MyFragment2();FragmentManager fragmentManager = getFragmentManager();FragmentTransaction beginTransaction = fragmentManager.beginTransaction();beginTransaction.add(R.id.frame,fragement2);beginTransaction.commit();

fragment的生命周期

Created

onAttach()->onCreate()->onCreateView()->onActivityCreated()

Started

onStart()

Resumed

onResume()

Paused

onPause()

Stopped

onStop()

Destroyed

onDestroyView()->onDestroy()->onDetach()
//当Fragment被添加到Activity的时候回调这个方法,并且只调用一次@Overridepublic void onAttach(Activity activity){    super.onAttach(activity);}
//创建Fragment时会回调,只调用一次@Overridepublic void onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);}
//每次创建回调@Overridepublic View onCreateView(## ##){}
//当Fragment所在的Activity启动完成后调用@Overridepublic void onActivityCreated(Bundle savedInstanceState){    super.onActivityCreated(savedInstanceState);}
//启动onStart()@Overridepublic void onStart(){    super.onStart();}
//onResume@Overridepublic void onResume(){    super.onResume();}
//onPause 暂停@Overridepublic void onPause(){    super.onPause();}
//onStop 停止@Overridepublic void onStop(){    super.onStop();}

//last

//onDestroyView@Overridepublic void onDestroyView(){    super.onDestroyView();}

//销毁

//onDestroy@Overridepublic void onDestroy(){    super.onDestroy();}

重点
删除Fragment
//onDetach

@Overridepublic void onDetach(){    super.onDetach();}

启动Fragment

onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()

暂停Fragment - //暂停和停止的方法

onPause()->onStop()

重新看到Fragment

onStart()->onResume()

Fragment1 -> Fragment2

Fragment1: onPause()->onStop()->onDestroyView->onDestroy()->onDetach()Fragment2: onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()

Fragment2回到主界面时

onPause()->onStop()

又重新看见

//Fragment2回到界面 onStart()->onResume()

Fragment2 退出

onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()

Fragment与Activity

  1. Fragment是通过调用getActivity()的方法获取Activity的;
  2. Activity是通过调用FragmentManager的findFramentById()的,也可以用findFragmentByTag()方法获取Fragment片段的。

重点

public class MyFragment extends Fragment{    @Override    public View onCreateView(LayoutInflater inflater,ViewGrop container,Bundle savedInstanceState){        return super.onCreateView(inflater,container,savedInstanceState);        //View view = inflater.inflate(R.layout.fragment, container, false);        //TextView tv = view.findViewById(R.id.textview);        //return view;    }}

一个Activity调用Fragment的界面显示数据内容

String text = editext.getText().toString();MyFragment fragment = new MyFragment();Bundle bundle = new Bundle();bundle.putString("name",text);fragment.setArguments(bundle);FragmentManager fragmentManager = getFragmentManager();FragmentTransaction beginTransaction = fragmentManager.beginTransaction();//beginTransaction.add(containerViewId,fragment,tag)beginTransaction.add(R.id.layout.textview,fragment,"fragment");beginTransaction.commit();

在Fragement中设置

public class MyFragment extends Fragment{    @0verride    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){        View view = inflater.infate(R.layout.fragement,container,false);        TextView tv=view.findViewById(R.id.textview);        String text = getArguments().get("name")+"";        tv.setText(text);    }}

Fragment

private String name = "v";public interface Myvoid{    public void name(String name);}

Activity

implements Myvoid

fragment

@Overridepublic void onAttach(Activity activity){    myvoid = activity;    super.onAttach(activity);}

回到Activity

覆盖方法

另类

xml

<?xml version="1.0" encoding="utf-8"?>    

Fragment

public class MyinfoFragment extends Fragment implements View.OnClickListener{    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment_myinfo, null);    }    @Override    public void onViewCreated(View view, Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);    }    @Override    public void onClick(View v) {    }}

MainActivity

public class MainActivity extends FragmentActivity implements View.OnClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);        setMain();    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {           }    private void setMain() {            }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);            }    private void setSelectStatus(int index) {        switch (index){                    }    }    private void initView() {            }    @Override    public void onClick(View v) {        switch (v.getId()){                    }    }}

继续

FragmentManager fragmentManager = getFragmentManager();Fragment findFragmentById = fragmentManager.findFragmentById(R.id.fragment);

ViewPager左右滑动

ViewPager是一种容器,可以盛装两种类型的对象:一种是View对象; 也可以放置Fragment。

getLayoutInflater().form(this);getLayoutInflater().form(this).inflate(resource,root);

配置Adapter:

准备数据源 -> 准备适配器 ->加载适配器

List
PagerAdapter

ViewPager的声明:
是为了解决版本兼容性问题

过程

我们创建好布局文件,然后在MainActivity中添加,进行实例

准备数据源

private List viewList;
viewList = new ArrayList();

显示

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

添加

viewList.add(view);

准备适配器

@Overridepublic Object instantiateItem(ViewGroup container, int position){}

搭建构造方法

public MyPagerAdapter(List viewList){    this.viewList=viewList;}
container.addview();return viewList.get(position);
container.removeView(viweList.get(position));

Adapter

创建Adapter

PagerAdapter pagerAdapter = new PagerAdapter(viewList);

setAdapter(pagerAdapter);

对象

PagerTabStrip和PagerTitleStrip

一个View显示ViewPager,然后在ViewPager中添加PagerTabStrip 

然后加入标题,private List titleList;

同理,ViewPager添加题目

titleList = new ArrayList();titleList.add("第一题");titleList.add("第二题");titleList.add("第三题");titleList.add("第五题");

在加入PagerAdapter中,创建Adapter下创建,MyPagerAdapter.java

MyPagerAdapter.java

public class MyPagerAdapter extends PagerAdapter{    private List viewList;    private List titleList;    public MyPagerAdapter(List viewList, List titleList){        this.viewList=viewList;        this.titleList=titleList;    }}

加入题目数量第几题
显示标题
getPageTitle(),显示所对应的标题

@Overridepublic CharSequence getPageTitle(int position){    //return super.getPageTitle(position);    return titleList.get(position);}

PagerTabStrip的属性
背景

setBackgroundColor(Color.RED);
文本
setTextColor();
下划线
setDrawFullUnderline(false);
分割线
setTabIndicatorColor();

PagerTitleStrip 与 PagerTabStrip 类似

适配器

FragmentPagerAdapter

import android.os.Bundle;import android.support.v4.app.Fragment;public class ExercisesFragment extends Fragment {    private ListView lvList;//来源fragment    private ListItemAdapter adapter; //适配器    private List<> ebl; //列表集合    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment, null);    }    @Override    public void onViewCreated(View view, Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        initData();        lvList = view.findViewById(R.id.lv_list);        adapter = new ListItemAdapter(getActivity());        adapter.setData(ebl);        lvList.setAdapter(adapter);    }    private void initData(){        ebl = new ArrayList();        for (int i=0;i<10;i++){            Bean bean = new Bean();            bean.id=(i+1);            switch (i){                case 0:                                    case 9:                                    default:                    break;            }        }    }}

设置MyFragment继承Fragment

public class MyFragment extends Fragment{    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){        return inflater.infate(R.layout.view, container, false);        //return inflater.infate(R.layout.view, null);    }}

点击跳转Fragment

public void onClick(View v) {        switch (v.getId()){            case R.id.bottom1:                //getSupportFragmentManager().beginTransaction().add(R.id.main_body,new CFragment()).commit();                               break;            case R.id.bottom2:                //getSupportFragmentManager().beginTransaction().add(R.id.main_body,new EFragment()).commit();                                break;            case R.id.bottom3:                //getSupportFragmentManager().beginTransaction().add(R.id.main_body,new MFragment()).commit();                                break;        }    }

实例

private List fragmentList;

Fragment作为数据源

添加FragmentfragmentList = new ArrayList();fragmentList.add(new Fragment());添加创建的Fragment//fragmentList.add(new Fragment%());

导入的包

import android.support.v4.app.Fragment;

配置数据适配器

如果用FragmentPagerAdapter,一次性加载
同理

public class MyFragment extends FragmentPagerAdapter{    private List fragmentList;    private List titleList;    public MyFragment(FragmentManager fm,List fragmentList,List titleList){        super(fm)        this.fragmentList=fragmentList;        this.titleList=titleList;    }}

MainActivity.java

public class MainActivity extends FragmentActivity implements View.OnClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    private void setMain() {           }    private void setSelectStatus(int index) {        switch (index){                   }    }    private void initView() {            }    @Override    public void onClick(View v) {        switch (v.getId()){                            //getSupportFragmentManager().beginTransaction().add(R.id.main_body,new CourseFragment()).commit();                            //getSupportFragmentManager().beginTransaction().add(R.id.main_body,new ExercisesFragment()).commit();                            //getSupportFragmentManager().beginTransaction().add(R.id.main_body,new MyinfoFragment()).commit();        }    }}
FragmentPagerAdapter adapter=new FragmentPagerAdapter(getSupportFragmentManager());

轮播图

ViewFlipper

自动播放

静态的方法导入:

   

动态导入:

flipper = findViewById(R.id.flipper);
flipper.addView(getImageView(R.drawable.picture));

自己定义动态效果,一般用anim的文件夹表示:

然后创建布局界面:
创建轮播图

MainActivity.java

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }}

声明变量

private ViewFlipper flipper;

进行初始化

flipper = findViewById(R.id.flipper);

动态导入:addView(getImageView(R.drawable.picture));

轮播图有多张图片,创建数组,分别导入

获取图片

private ImageView getImageView(int imageId){    ImageView image = new ImageView(this);    image.setImageResource(imageId);    return image;}
for(int i=0; i

手势滑动的方法

@Overridepublic boolean onTouchEvent(MotionEvent event){    return super.onTouchEvent(event);}

自动播放效果:

flipper.setFlipInterval(3000);flipper.startFlipping();

ScrollView

HorizontalScrollView,ScrollView

滚动视图

不能滚动,因为布局不是ScrollVeiw,而是

tv.setText(getResources().getString(R.string.content));

如果是这样就可以

setOnTouchListener的方法

scroll.setOnTouchListener(new OnTouchListener){}

记得 scrollBy 和 scrollTo 的区别

Gallery 图片浏览器

Gallery像一个走廊,ImageSwitcher像幻灯片

显示图片,就要对图片进行封装,声明数组

布局 老样子

图片id,private int[] res 定义数组

我们学过的适配器,都是继承BaseAdapter

ArrayAdapter adapter;SimpleAdapter adapter;

继承BaseAdapter中必须要实现的方法

  1. public int getCount()

  2. public long getItemId(int position)

  3. public Object getItem(int position)

  4. public View gtView(int position, View convertView, ViewGroup parent)

如果自己定义一个适配器,定义后,实现BaseAdapter中的方法,
然后创建构造函数

private int[] images;public ImageAdapter(int []images){    this.images = images;}

说明

获取视图

private Context context;public ImageAdapter(int[] images, Context context){    this.images = images;    this.context = context;}

public View gtView(int position, View convertView, ViewGroup parent)

{    //ImageView image=new ImageView(this);    ImageView image = new ImageView(context);    image.setBackgroundResource(数组[position]);    //设置图片大小    image.setLayoutParams(new Gallery.LayoutParams(400,300));    return image;}

加载适配器 MainActivity.java

声明适配器: private ImageAdapter adapter;

初始化: adapter = new ImageAdapter(数组的变量名,上下文(this));

gallery.setAdapter(adapter);

无限制浏览

return Interger.MAX_VALUE;

监听器

setOnItemSelectedListener(this);

同样也要布局

声明 private ImageSwitcher is;

进行初始化 is = findViewById(R.id.is);

监听器:gallery.setOnItemSelectedListener(this);

现实的接口:implements OnItemSelectedListener,ViewFactory

public View makeView(){    }

is.setFactory(this);

public View makeView(){    ImageView image = new ImageView(this);    return image;}

SeekBar 拖动进度条

setOnSeekBarChangeListener(this);

Android常用布局样式

线性布局
LinearLayout

相对布局
RelativeLayout

表格布局
TableLayout

可以使用GridView替代

绝对布局
AbsoluteLayout

帧布局(主要布局叠加)
FrameLayout

多用LinearLayout和RelativeLayout

少用AbsoluteLayout

定位:分享 Android&Java 知识点

更多相关文章

  1. Android与JS互调
  2. 常用的小方法,避免忘记,在此记录一下
  3. Android中获取颜色的几种方法
  4. Android中全屏无标题设置(Android学习随笔十一)
  5. Android(安卓)SDK下载和更新失败的解决方法
  6. android中View.measure方法详解
  7. Android代码混淆官方实现方法
  8. ch011 Android(安卓)Galley与ImageSwitch
  9. android绑定服务方法使用

随机推荐

  1. Android 关于定位中的那点事(GPS,GPGGA,NM
  2. android 扫描文件栈溢出问题,自己写的扫描
  3. Android 基于回调的事件处理----事件分发
  4. Android(安卓)8.1 添加属性SystemPropert
  5. Android(安卓)AsyncTask for Long Runnin
  6. Android:绘制自定义视图
  7. How to build Eclipse Android(安卓)Envi
  8. Android SoundPool 的使用
  9. Android开发之基本控件和四种布局方式详
  10. nexus6 升级5.1