1.倒计时+band
public class HandlerActivity extends AppCompatActivity {
private TextView textView;
private int miao = 3;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (miao==0){
Intent intent = new Intent(HandlerActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
else{
textView.setText(miao+"秒");
miao--;
handler.sendEmptyMessageDelayed(0,1000);
}
}
};
private Banner banner;
private ArrayList<String> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_handler);
textView = findViewById(R.id.textView);
banner = findViewById(R.id.banner);
data = new ArrayList<String>();
data.add("图片网址");
data.add("图片网址");
data.add("图片网址");
data.add("图片网址");
//设置图片加载器
banner.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//初始化
com.nostra13.universalimageloader.core.ImageLoader imageLoader =
com.nostra13.universalimageloader.core.ImageLoader.getInstance();
imageLoader.displayImage((String) path,imageView);
}
});
banner.setImages(data); //图片数据
banner.isAutoPlay(true);//图片是否轮播,TRUE是
banner.setDelayTime(1000);//图片切换时间
banner.start();//开始轮播
handler.sendEmptyMessage(0);
}
}
2.倒计时+band布局
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HandlerActivity"
android:orientation="horizontal"
>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="44dp"
android:layout_marginEnd="55dp"
android:text="3秒"
android:textSize="30dp" />
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true" />
</RelativeLayout>
3.QQ页面+侧滑+PullToRefreshListView
在这里插入代码片public class MainActivity extends FragmentActivity {
private FrameLayout framelayout;
private RadioGroup radioGroup;
private Fragment1 fragment1;
private Fragment2 fragment2;
private Fragment3 fragment3;
private FragmentManager fragmentManager;
private FragmentTransaction transaction;
private PullToRefreshListView pullList1;
private Dao dao;
String str = "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?count=10&page=1";
private List<JsonBean.ResultBean> data;
private PullAdter adter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
framelayout = findViewById(R.id.framelayout);
radioGroup = findViewById(R.id.radioGroup);
fragmentManager = getSupportFragmentManager();
transaction = fragmentManager.beginTransaction();
fragment1 = new Fragment1();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
transaction.add(R.id.framelayout, fragment1);
transaction.add(R.id.framelayout, fragment2);
transaction.add(R.id.framelayout, fragment3);
transaction.replace(R.id.framelayout, fragment1);
transaction.commit();
radioGroup.check(radioGroup.getChildAt(0).getId());
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
FragmentTransaction transaction1 = fragmentManager.beginTransaction();
switch (checkedId){
case R.id.radioButton0:
transaction1.replace(R.id.framelayout, fragment1);
break;
case R.id.radioButton1:
transaction1.replace(R.id.framelayout, fragment2);
break;
case R.id.radioButton2:
transaction1.replace(R.id.framelayout, fragment3);
break;
}
transaction1.commit();
}
});
pullList1 = findViewById(R.id.pullList1);
//PullToRefreshListView.Mode.BOTH,上下拉都可以
pullList1.setMode(PullToRefreshListView.Mode.BOTH);
//设置是否刷新的时候可以滑动
pullList1.setScrollingWhileRefreshingEnabled(true);
dao = new Dao(MainActivity.this);
//判断有没有网络
if (Http.isABoolean(MainActivity.this)){
//如果有网就请求网络
Http.httpAsynTask(str, new Http.BackCallString() {
@Override
public void getData(String s) {
gsonj(s);
}
});
}
else{
//如果没有网络,就请求数据库中的数据
Cursor query = dao.query("pers", null, null, null, null, null, null);
data = new ArrayList<JsonBean.ResultBean>();
if (query.moveToFirst()){
do{
String title = query.getString(query.getColumnIndex("title"));
String pice = query.getString(query.getColumnIndex("pice"));
data.add(new JsonBean.ResultBean(title,pice));
}while (query.moveToNext());
}
Toast.makeText(MainActivity.this,"没网络了",Toast.LENGTH_LONG).show();
query.close();
//适配器
adter = new PullAdter(data,MainActivity.this);
pullList1.setAdapter(adter);
}
//监听
pullList1.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
//下拉加载
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//判断有没有网络
if (Http.isABoolean(MainActivity.this)){
//如果有网就请求网络
Http.httpAsynTask(str, new Http.BackCallString() {
@Override
public void getData(String s) {
gsonj(s);
}
});
}
else{
Toast.makeText(MainActivity.this,"没网络了",Toast.LENGTH_LONG).show();
}
pullList1.onRefreshComplete();
}
//上拉刷新
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//判断有没有网络
if (Http.isABoolean(MainActivity.this)){
//如果有网就请求网络
Http.httpAsynTask(str, new Http.BackCallString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.ResultBean> data1 = jsonBean.getResult();
data.addAll(data1);
adter.notifyDataSetChanged();
pullList1.onRefreshComplete();
}
});
}
else{
Toast.makeText(MainActivity.this,"没网络了",Toast.LENGTH_LONG).show();
}
pullList1.onRefreshComplete();
}
});
}
private void gsonj(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
data = jsonBean.getResult();
//有数据就不添加
if(dao.query("pers", null, null, null, null, null, null).moveToFirst()){
}
else{
//没有数据,添加
for (JsonBean.ResultBean bean:data){
ContentValues values = new ContentValues();
values.put("title",bean.getSummary());
values.put("pice",bean.getImageUrl());
dao.insert("pers",null,values);
}
}
//适配器
adter = new PullAdter(data,MainActivity.this);
pullList1.setAdapter(adter);
}
}
4.QQ页面+侧滑+PullToRefreshListView布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawr"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:gravity="center"
>
<RadioButton
android:id="@+id/radioButton0"
android:text="55"
android:button="@null"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/select1"
/>
<RadioButton
android:id="@+id/radioButton1"
android:text="55"
android:button="@null"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/select2"
/>
<RadioButton
android:id="@+id/radioButton2"
android:text="55"
android:button="@null"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/select3"
/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#818981"
android:orientation="vertical"
>
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pullList1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
5.TabLayout
public class Fragment1 extends Fragment {
private TabLayout tabLayout;
private ViewPager viewpager;
private ArrayList<Fragment> data;
private ArrayList<String> data2;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container,false);
//找控件
tabLayout = view.findViewById(R.id.tablayout);
viewpager = view.findViewById(R.id.viewpager);
//适配器
TabAdapter adapter = new TabAdapter(getChildFragmentManager());
viewpager.setAdapter(adapter);
//绑定
tabLayout.setupWithViewPager(viewpager);
return view;
}
}
6.TabLayout适配器
public class TabAdapter extends FragmentPagerAdapter {
String[] strings = new String[]{"one","two"};
public TabAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i){
case 0:
return new Fragment1_1();
case 1:
return new Fragment1_2();
}
return null;
}
@Override
public int getCount() {
return strings.length;
}
//此方法用来显示tab上的名字
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return strings[position];
}
}
7.TabLayout布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
8.Framgent1_1里的PullToRefreshListView
public class Fragment1_1 extends Fragment {
private PullToRefreshListView pullList;
private Dao dao;
String str = "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?count=10&page=1";
private List<JsonBean.ResultBean> data;
private PullAdter adter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1_1, container,false);
pullList = view.findViewById(R.id.pullList);
//PullToRefreshListView.Mode.BOTH,上下拉都可以
pullList.setMode(PullToRefreshListView.Mode.BOTH);
//设置是否刷新的时候可以滑动
pullList.setScrollingWhileRefreshingEnabled(true);
dao = new Dao(getActivity());
//判断有没有网络
if (Http.isABoolean(getActivity())){
//如果有网就请求网络
Http.httpAsynTask(str, new Http.BackCallString() {
@Override
public void getData(String s) {
gsonj(s);
}
});
}
else{
//如果没有网络,就请求数据库中的数据
Cursor query = dao.query("pers", null, null, null, null, null, null);
data = new ArrayList<JsonBean.ResultBean>();
if (query.moveToFirst()){
do{
String title = query.getString(query.getColumnIndex("title"));
String pice = query.getString(query.getColumnIndex("pice"));
data.add(new JsonBean.ResultBean(title,pice));
}while (query.moveToNext());
}
Toast.makeText(getActivity(),"没网络了",Toast.LENGTH_LONG).show();
query.close();
//适配器
adter = new PullAdter(data,getActivity());
pullList.setAdapter(adter);
}
//监听
pullList.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
//下拉加载
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//判断有没有网络
if (Http.isABoolean(getActivity())){
//如果有网就请求网络
Http.httpAsynTask(str, new Http.BackCallString() {
@Override
public void getData(String s) {
gsonj(s);
}
});
}
else{
Toast.makeText(getActivity(),"没网络了",Toast.LENGTH_LONG).show();
}
pullList.onRefreshComplete();
}
//上拉刷新
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//判断有没有网络
if (Http.isABoolean(getActivity())){
//如果有网就请求网络
Http.httpAsynTask(str, new Http.BackCallString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.ResultBean> data1 = jsonBean.getResult();
data.addAll(data1);
adter.notifyDataSetChanged();
pullList.onRefreshComplete();
}
});
}
else{
Toast.makeText(getActivity(),"没网络了",Toast.LENGTH_LONG).show();
}
pullList.onRefreshComplete();
}
});
return view;
}
private void gsonj(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
data = jsonBean.getResult();
//有数据就不添加
if(dao.query("pers", null, null, null, null, null, null).moveToFirst()){
}
else{
//没有数据,添加
for (JsonBean.ResultBean bean:data){
ContentValues values = new ContentValues();
values.put("title",bean.getSummary());
values.put("pice",bean.getImageUrl());
dao.insert("pers",null,values);
}
}
//适配器
adter = new PullAdter(data,getActivity());
pullList.setAdapter(adter);
}
}
9.PullToRefreshListView适配器
public class PullAdter extends BaseAdapter {
private List<JsonBean.ResultBean> data;
private Context context;
public PullAdter(List<JsonBean.ResultBean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return position%2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
switch (getItemViewType(position)){
case 0:
Holder holder;
if (convertView == null){
convertView = View.inflate(context,R.layout.item1,null);
holder = new Holder();
holder.name = convertView.findViewById(R.id.name);
holder.imag = convertView.findViewById(R.id.imag);
convertView.setTag(holder);
}
else{
holder = (Holder) convertView.getTag();
}
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true).build();
JsonBean.ResultBean dataBean = data.get(position);
holder.name.setText(dataBean.getSummary());
ImageLoader.getInstance().displayImage(dataBean.getImageUrl(),holder.imag);
break;
case 1:
Holder2 holder2;
if (convertView == null){
convertView = View.inflate(context,R.layout.item2,null);
holder2 = new Holder2();
holder2.name2 = convertView.findViewById(R.id.name2);
holder2.imag2 = convertView.findViewById(R.id.imag2);
convertView.setTag(holder2);
}
else{
holder2 = (Holder2) convertView.getTag();
}
DisplayImageOptions options1 = new DisplayImageOptions.Builder()
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true).build();
JsonBean.ResultBean dataBean2 = data.get(position);
holder2.name2.setText(dataBean2.getSummary());
ImageLoader.getInstance().displayImage(dataBean2.getImageUrl(),holder2.imag2);
break;
}
return convertView;
}
class Holder{
ImageView imag;
TextView name;
}
class Holder2{
ImageView imag2;
TextView name2;
}
}
10.Http和网络判断
public class Http {
public static void httpAsynTask(String str,final BackCallString backCallString){
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... strings) {
return reputHttpGet(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
backCallString.getData(s);
}
}.execute(str);
}
//接口
public interface BackCallString{
void getData(String s);
}
private BackCallString backCallString;
public void setBackCallString(BackCallString backCallString) {
this.backCallString = backCallString;
}
//http
public static String reputHttpGet(String s){
try {
URL url = new URL(s);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
//设置请求码
int code = connection.getResponseCode();
//判断网络状态是否正确
if (code == HttpURLConnection.HTTP_OK){
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
StringBuilder builder = new StringBuilder();
String st = "";
while ((st = reader.readLine())!=null){
builder.append(st);
}
return builder.toString();
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//网络判断
public static boolean isABoolean(Context context){
//判断参数是否为空
if(context!=null){
//获取链接管理器
ConnectivityManager service = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo info = service.getActiveNetworkInfo();
//判断网络是否可用
if(info!=null){
return info.isAvailable();
}
}
return false;
}
}