在ViewPager中的Fragment添加控件及TextureView
来源:互联网 发布:软件学院信息化平台 编辑:程序博客网 时间:2024/05/19 08:39
在ViewPager中的Fragment添加控件及TextureView
首先做一个ViewPager,这是利用一个利用FragmentPagerAdapter制作的页面。
MainActivity:
package example.com.testtextureview;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.view.ViewPager;import java.util.ArrayList;import java.util.List;public class MainActivity extends FragmentActivity{ private ViewPager pager; private List<String> titleList; private List<Fragment> fragList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); titleList = new ArrayList<String>(); titleList.add("第1页"); titleList.add("第2页"); titleList.add("第3页"); titleList.add("第4页"); pager = (ViewPager) findViewById(R.id.pager); fragList = new ArrayList<Fragment>(); fragList.add(new Fragment1()); fragList.add(new Fragment2()); fragList.add(new Fragment3()); fragList.add(new Fragment4()); tab = (PagerTabStrip) findViewById(R.id.tab); tab.setBackgroundColor(Color.RED); tab.setTextColor(Color.WHITE); tab.setDrawFullUnderline(false); tab.setTabIndicatorColor(Color.WHITE); MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter( getSupportFragmentManager(), fragList, titleList); pager.setAdapter(adapter); }}
适配器MyFragmentPagerAdapter:
package example.com.testtextureview;import java.util.List;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ private List<Fragment>fragList; private List<String>titleList; public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragList,List<String>titleList) { super(fm); this.fragList=fragList; this.titleList=titleList; } @Override public Fragment getItem(int arg0) { return fragList.get(arg0); } @Override public int getCount() { return fragList.size(); } @Override public CharSequence getPageTitle(int position) { return titleList.get(position); }}
content_main.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.testviewpager.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <android.support.v4.view.PagerTabStrip android:id="@+id/tab" android:layout_width="fill_parent" android:layout_height="45dp" android:layout_gravity="top"/> </android.support.v4.view.ViewPager></RelativeLayout>
之后新建4个Fragment分别为Fragment1,Fragment2,Fragment3,Fragment4
现在我要在Fragment1中添加一个Button,
首先在xml中添加一个Button,
之后在Fragment1中代码为:
package example.com.testtextureview;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.Toast;/** * Created by bazinga on 2015/10/9. */public class Fragment1 extends Fragment implements View.OnClickListener{ private Button mButton; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1,null); mButton = (Button) view.findViewById(R.id.btn); mButton.setOnClickListener(this); return view; } @Override public void onClick(View view) { Toast.makeText(getActivity(), "start", Toast.LENGTH_SHORT).show(); }}
然后我想在Fragment2中获取一个Camera,在第二页中显示TextureView;
package example.com.testtextureview;import android.graphics.SurfaceTexture;import android.hardware.Camera;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.TextureView;import android.view.View;import android.view.ViewGroup;import android.widget.RelativeLayout;import java.io.IOException;/** * Created by bazinga on 2015/10/9. */public class Fragment2 extends Fragment implements TextureView.SurfaceTextureListener{ private Camera mCamera; private TextureView mTextureView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); RelativeLayout view = new RelativeLayout(getActivity()); view.setLayoutParams(lp); mTextureView = new TextureView(getActivity()); mTextureView.setSurfaceTextureListener(this); mTextureView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); view.addView(mTextureView); return view; } @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { mCamera = Camera.open(); try { mCamera.setPreviewTexture(surface); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } mTextureView.setRotation(90); mTextureView.setScaleX(2f); } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int i, int i1) { } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) { mCamera.stopPreview(); mCamera.release(); return true; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { }}
其中这里不需要有他自己的xml,因为这是由java代码创建,这是创建一个RelativeLayout布局,不需要获取Camera的宽度和高度,只需要将布局的宽高设置出来,将mTextureView添加进View中,设置监听。
在这里会出现摄像屏幕不能铺满整个屏幕的问题,这时候需要设置 mTextureView.setScaleX(2f);,才能将屏幕铺满,这应该是一个bug吧。
0 0
- 在ViewPager中的Fragment添加控件及TextureView
- Fragment在ViewPager中的生命周期
- Fragment在ViewPager中的生命周期
- Fragment在ViewPager中的生命周期
- Android 给Fragment中的控件添加监听及使用intent
- Viewpager+fragment结构,如何获取fragment中的控件
- 更新及替换ViewPager中的Fragment
- 如何更新及替换ViewPager中的Fragment
- 如何更新及替换ViewPager中的Fragment
- 在Viewpager中的Fragment使用ContextMenu问题
- 在Viewpager中的Fragment使用ContextMenu问题
- Fragment在ViewPager中的初始动画
- Android:Fragment在ViewPager中的生命周期
- viewpager添加fragment问题
- 关于在ViewPager中添加Fragment的问题
- 怎么在viewpager中获取子fragment里面的控件
- 在ViewPager中的Fragment在各种状态下的生命周期
- android 中的 ViewPager+ Fragment
- AFNetworking2.0源码解析<一>
- 谈谈iOS的layoutSubviews机制
- web service
- js过滤HTML标签以及 
- zabbix下 安装配置zabbix
- 在ViewPager中的Fragment添加控件及TextureView
- 堆和栈的总结
- 为什么我要用 Node.js? 案例逐一介绍
- 函数getopt(),及其参数optind
- 自学编程的那些事
- github 资源总结
- android 自定义组件
- Android Socket进程通信——Client与Server之间的通信机制
- 初识C#开源商城BrnShop及BrnMall