-
Activity向Fragment传递数据 1.实例化Bundle数据包。 使用putXXX(key,value);方式将键值对数据放入数据包。 Bundle bundle=new Bundle(); bundle.putString("data", editText.getText().toString()); 2.对实例化的Fragment进行传值。使用setArguments(bundle)方式 CommunicationFragment fragment=new CommunicationFragment(); fragment.setArguments(bundle); //设置数据包 3.在Fragment端,使用getArguments获取Bundle数据包。 Bundle bundle=getArguments(); 4.使用 bundle.getXXX(key); 使用该方式,通过键获取数据。 bundle.getString("data")查看全部
-
使用Gallery 和 ImageSwitcher 制作图片浏览器 Gallery介绍 我们有时候在手机上或者PC上看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据你的点击或者触摸来触发其他事件响应。同样的,在Android中也提供这种实现,这就是通过Gallery在UI上实现缩略图浏览器。 ------------------------- 谷歌已经将Gallery列为过期的控件,建议使用HorizonScrollView或者ViewPager。 ------------------------- 查看源码不难发现 ArrayAdapter 和 SimpleAdapter 都继承了 BaseAdapter。 所以,我们也可以自己定义一个适配器!自定义的好处是自由度、灵活性会更大。 BaseAdapter中的重要方法 (1)public int getCount()——返回一定义的数据源的总数量 (2)public Object getItem(int position) public long getItemId(int position) ——告诉适配器取得目前容器中的数据ID和对象 (3)public View getView(int position,View convertView,ViewGroupparent)——取得目前要显示的图像View,传入数组ID值使之读取与成像。 ----------------------------------- 使用 Gallery 浏览图片的步骤: 1. 在 main.xml 中添加 Gallery标签。 2. 在 MainActivity 中创建数据源,这里就是 int数组存放图片id。 3. 自定义适配器。创建一个新类 ImageAdapter ,继承 BaseAdapter。重写getView(int position, View view, ViewGroup viewGroup)方法。 4. 在 MainActivity加载适配器。查看全部
-
自定义适配器的步骤 1. 创建一个新类 IamgeAdapter ,继承BaseAdapter。 2. 为了接收参数,需要构建有参的构造方法: private int[]res; //用于接收数据源 private Context context;//上下文信息,ImageView的初始化会用到 //构造有参构造方法 public ImageAdapter(int[]res,Context context){ this.res=res; this.context=context; } 3. 重写getView(),把图片ID(这里是res[position])转变为 ImageView,并返回 ImageView: public View getView(int position, View view, ViewGroup viewGroup) { ImageView image = new ImageView(context); image.setBackgroundResource(res[position]); //设置图片(ImageView)在Gallery中的缩略图的大小 image.setLayoutParams(new Gallery.LayoutParams(400,300));//宽是400,高是300 //设置缩放比例(scale)采取的类型 image.setScaleType(ImageView.ScaleType.FIT_XY);//横向X-Y轴的拉伸 return image; } 其他方法的重写,写法固定: public int getCount() { return res.length; } public Object getItem(int position) { return res[position]; } public long getItemId(int position) { return position; }查看全部
-
scrollTo 和 scrollBy区别 scrollTo: 相对于滚动视图的起始位置,去滚动相应的距离,所以只能滑动一次。 scrollBy: 相对于当前位置,去滚动相应的距离,每滚动一次就会更新当前位置,所以能不断滚动。 scrollBy的源码: public void scrollBy(int x,int y){ scrollTo(mScrollX + x , mScrollY + y); } 其中,mScrollX 和 mScrollY 表示当前坐标。 ---------------------------------- 应用案例:控制ScrollView视图的位置 实际案例:小说阅读,想要回到上次看的地方,如果采取手势滑动,要不停地滑,会比较麻烦,而现在采取按钮的方式代替手势滑动,可以直接定位到你上次浏览的地方,实现方法是记录上一次退出的位置,下次浏览时使用 scrollTo 或者 scrollBy 去恢复到上次浏览到的位置。 ------------------------------------- 通过按钮滑动视图的步骤 1. 在 main.xml 中添加两个 Button,分别表示向上和向下(这里是垂直的ScrollView)。 2. 在 MainActivity中初始化这两个Button。令 MainActivity 实现接口 OnClickListener。 3. 对两个按钮设置监听器。 4. 重写 onClick(): (1)使用switch,通过view.getId()判断是哪个按钮点击。 (2)使用 scrollTo(int x,int y) 或者 scrollBy(int x,int y)实现滑动。查看全部
-
ScrollView的监听器setOnTouchListener 第一步 在MainActivity中声明和初始化ScrollView 第二步 设置监听器setOnTouchListener 第三步 OnTouchListener中用switch语句套用getAction 第四步 switch语句里嵌套if语句判断滑动到顶部还是底部 第五步 textView.append();方法加载新的内容 getScrollY()————滚动条滑动的距离 getMeasuredHeight:需要滑动内容实际长度。 getHeight:整个页面的长度(高度)。 公式:活动到底部:scroll.getChildAt(0).getMeasuredHeight()<=scroll.getHeight()+scroll.getScrollY(); scroll.getChildAt(0).getMeasuredHeight():总高度 scroll.getHeight():屏幕高度 scroll.getScrollY():滑动条滑动距离 getMeasureedHeight和getHeight的区别 当视图未占满一个屏幕时,它们两者是相等的. 当视图超过一个屏幕时 getMeasureedHeight 包括隐藏的部分的长度和显示出来的长度 getHeight 仅仅是显示出来的长度.查看全部
-
TextView加载一段文本: 1.在values.strings.xml中加入<string name="content">文本内容</string> 2.tv.setText(getResources().getString(R.string.content)) ScrollBar分两种: HorizontalScrollView: 水平滚动视图 ScrollView: 垂直滚动视图 隐藏滚动条查看全部
-
支持手势滑动 第一步:加入onTouchEvent(MotionEvent event)方法,通过switch(event.getAction()){}设置手指各种活动时的程序运行的方式。 第二步:通过ACTION_Down获取的起始位置startX=event.getX(),与ACTION_MOVE获取的位置做比较,判断手指是向左划还是向右划。 第三步:为滑动方式设置flipper常用方法,看显示前一页还是显示后一页 支持手势滑动的ViewFlipper private float startX; @Override public boolean onTouchEvent(MotionEvent event) { // TODO 自动生成的方法存根 switch (event.getAction()) { // 手指落下 case MotionEvent.ACTION_DOWN: startX = event.getX(); break; // 手指滑动 case MotionEvent.ACTION_MOVE: // 向右滑动且看上一页 if (event.getX() - startX > 100) { vf.setInAnimation(this, R.anim.left_in); vf.setOutAnimation(this, R.anim.left_out); vf.showPrevious(); } // 向左滑动且看下一页 if (startX - event.getX() > 100) { vf.setInAnimation(this, R.anim.right_in); vf.setOutAnimation(this, R.anim.right_out); vf.showNext(); } break; // 手指离开 case MotionEvent.ACTION_UP: break; } return super.onTouchEvent(event); } Ps:ViewPager:人工切换页面;ViewFlipper:人工切换页面+系统自动切换页面。查看全部
-
1-->MainActivity 启动加载四个button 2-->第一个button点下后会跳转到MainActivity2这个activity Intent intent = new Intent(this,MainActivity2.class); 3-->MainActivity2 开始加载R.layout.mainactivity2布局文件 4-->R.layout.mainactivity2加载MyFragment class文件 5-->MyFragment加载R.layout.fragment文件并返回View对象,最终相应的值返回到地三步. 6-->MainActivity2 button的点击事件会将文字变为TextView改变了查看全部
-
实现动画效果的步骤 1. 创建文件夹anim,放置实现动画效果的xml文件。在drawable中放置图片资源。 2. 在 main.xml中放置<ViewFlipper> 3. 在MainActivity中创建 int数组,放置图片id。 4. 初始化ViewFlipper,动态导入子View: for (int i=0;i<resId.length;i++){ flipper.addView(getImageView(resId[i])); } 这里自定义了方法 private ImageView getImageView(int resId){ ImageView image = new ImageView(this); //image.setImageResource(resId);//不采取此方法的原因:ImageView的宽高完全取决于图片的宽高,不符合“全屏展示”的要求 image.setBackgroundResource(resId);//background可以铺满整个屏幕 return image; } 5. 设置动画效果 //设置切换的动画效果 flipper.setInAnimation(this,R.anim.left_in);//Animation:动画。这里说是页面进入的动画(InAnimation)采用从左进入。 flipper.setOutAnimation(this,R.anim.left_out); flipper.setFlipInterval(3000);//切换的时间间隔,单位毫秒 flipper.startFlipping();//开启动画查看全部
-
使用ViewFlipper实现屏幕切换动画效果。 ViewFlipper和ViewPager一样,都是Android自带的一个多页面管理控件,不同的是ViewPager是手动切换页面,而ViewFlipper可以实现子界面的自动切换。只需设置切换时间和切换的动画效果,ViewFlipper里面的视图就会自动循环播放。 ------------------------ 为ViewFlipper添加View (1)静态导入:在layout布局文件中直接导入,不需要写额外的Java代码,缺点:直接写死,非常不灵活,所以不推荐使用。 (2)动态导入:addView()方法: flipper=(ViewFlipper)findViewById(R.i.flipper); flipper.addView(getImageView(R.drawable.pic1)); flipper.addView(getImageView(R.drawable.pic2)); --------------------------------- ViewFlipper常用的方法: 1)、SetInAnimation:设置View进入屏幕时候使用的动画 2)、setOutAnimation:设置View退出屏幕时候使用的动画 3)、showNext:调用该函数来显示ViewFlipper里面的下一个View 4)、showPrevious:调用该函数来显示ViewFlipper里面的上一个View 5)、setFilpInterval:设置View之间切换的时间间隔 6)、startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行 7)、stopFlipping:停止View切换查看全部
-
Fragment在应用当中应当是一个模块化和可重用的组件,因为Fragment定义了他自己的布局,以及通过使用他自己的生命周期回调方法定义了他自己的行为,可以讲Fragment包含到多个Activity中。查看全部
-
1.OnPageChangeListener()——用来监控ViewPager滑动到第几页,position是从零开始计数; Toast.makeText(this,"当前是第"+(arg0+1)+"个页面", Toast.LENGTH_SHORT).show(); 2.在我们的工作中,使用Fragment填充ViewPager更加常见,即使用FragmentPagerAdapter或者FragmentStatePagerAdapter,因为Fragment比View拥有更加全面的生命周期,而如果我们使用PagerAdapter,就是直接使用View来填充ViewPager,这种做法不常用。 切换页卡的监听器: 1.OnPageChangListener,其中最常用的函数是onPageSelected(int arg0); 2.Fragment生命周期比较全,以fragment为资源的ViewPager比较好控制,适用于逻辑比较复杂的情况,如果只是为了展示则推荐以view为资源的viewPager查看全部
-
ViewPager中“FragmentPagerAdpater”和“FragmentStatePagerAdapter”的应用 1.和PagerAdapter的用法类似。 fragmentlList=new ArrayList<Fragment>();fragmentlList.add(new Fragment1()); 2.自定义“FragmentPagerAdapter”,继承FragmentPagerAdapter类。为了兼容低版本,使用该包 。android.support.v4.app.Fragment 其他的Fragment也使用该包下的。 3.增添构造方法public MyFragmentAdapter(FragmentManager fm)。接收FragmentManager,同时也可将List<Fragment>,List<String>(标题)传进来。 4.类似ViewPager重写方法。不需要像ViewPager一样重写增添和销毁方法。但是多加了一个该方法【public Fragment getItem(int position)】,用改获取当前Fragment 5.回到Activity中,将继承的Activity类改为FragmentAcitvity。 6.构造自定义FragmentAdapter; fragmentAdpater=new MyFragmentAdapter(getSupportFragmentManager(), fragmentList, tabList); 6.1 使用getSupportFragmentManager()来获取兼容的FragmentManager; 7.增添适配器 二、FragmentStatePagerAdapter的用法和FragmentPagerAdapter一模一样。 三、FragmentPagerAdapter和FragmentStatePagerAdapter的区别 1.FragmentPagerAdapter在切换页面的时候,并不会销毁页面。而是保留在内存中 2.FragmentStatePagerAdapter在页面不在视线范围内时,会销毁页面。移除内存。 所以当页面占用大量内存时,可以使用FragmentStatePagerAdapter查看全部
-
Adapter里面的常用方法: (1)getCount()需要返回所有页面的数量 (2)isViewFromObject(View arg0,Object arg1)判断视图是否由对象产生 (3)instantiateItem(ViewGroup container,int position)实例化界面 (4)destroyItem(ViewGroup container,int position,Object object)销毁页面 (5)getPageTitle(int position)返回页面标题信息 PagerTabStrip: 1.点击上面的标题可以实现ViewPager的切换。 2.选中的文字下方包含指引线 3.可是设置是否显示全宽下划线(setDrawFullUnderline)查看全部
-
ViewPager设置标题 1. 在 main.xml文件中的ViewPager中添加控件<android.support.v4.view.PagerTabStrip>; 2. 在 MainActivity中创建 PagerTabStrip 对象tab; 3. 注意标题也需要存放在List集合里,所以要声明集合 List<String> titleList; 4. 为ViewPager页卡设置标题 实例化标题集合: titleList = new ArrayList<String>(); 添加标题:titleList.add("第一页"); titleList.add("第一页"); 等等。。。 5. 为了将标题集合传给ViewPager,需要改写适配器的构造方法,向构造方法添加参数List<String>; private List<String> titleList; //有参构造方法 public MyPagerAdapter(List<View>viewList,List<String> titleList){ this.viewList=viewList; this.titleList=titleList; } 6. 在适配器类中重写方法 getPageTitle(): @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } 7. 在 MianActivity 加载适配器 MyPagerAdapter adapter = new MyPagerAdapter(viewList,titleList); 8.可以为为ViewPager设置属性,显得更美观(在此之前要初始化tab) tap=(PagerTabStrip) findViewById(R.id.tap); 如果在 main.xml同时写上 <android.support.v4.view.PagerTabStrip> 和 <android.support.v4.view.PagerTitleStrip>,则前者会失效。查看全部
举报
0/150
提交
取消