//这里是引导页的代码
public class MainActivity extends AppCompatActivity {
//这里有个R 报错 cannot resolve symbol'R' 这个在File 下 invalidate caches Ressart 里点 cle 然后重启就好了
private ViewPager viewpager;
private Button button;
private int[] pics=new int[]{R.drawable.m4,R.drawable.m5,R.drawable.m6};
private SharedPreferences config;
private int time=5;
Handler han=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(time>0){
time--;
han.sendEmptyMessageDelayed(0, 1000);
}else if(time==0){
SharedPreferences.Editor edit = config.edit();
edit.putBoolean("flag",true);
edit.commit();
Intent intent=new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
finish();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.viewpager);
button = (Button) findViewById(R.id.button);
config = getSharedPreferences("config", MODE_PRIVATE);
boolean boolean1 = config.getBoolean("flag", false);
if(boolean1){
//跳转程序
Intent intent=new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
finish();
}
//设置数据适配器
viewpager.setAdapter(new MyPagerAdapter(this, pics));
viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==pics.length-1){
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
daojishi();
}
});
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void daojishi() {
new Thread(){
public void run() {
};
}.start();
han.sendEmptyMessageDelayed(0, 1000);
}
}
//这是跳转过来的activity 里面有json解析的方法
public class MainActivity2 extends AppCompatActivity {
private ListView listview;
private List<bbb> listb=new ArrayList<>();
private List<Gsonjiexi.DataBean> lists=new ArrayList<>();
private MAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
listview = (ListView) findViewById(R.id.listview);
mAdapter = new MAdapter();
initData();
}
private void initData() {
new MAsyncTaskString().execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
}
class MAdapter extends BaseAdapter{
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int i) {
return lists.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View containerView, ViewGroup viewGroup) {
View view = View.inflate(MainActivity2.this, R.layout.layout, null);
ImageView iv = (ImageView) view.findViewById(R.id.imageview);
TextView name = (TextView) view.findViewById(R.id.name);
TextView title = (TextView) view.findViewById(R.id.title);
//把图片url传递给asyncTask
new MAsyncTaskImage(iv).execute(lists.get(i).getPic_url());
name.setText(lists.get(i).getNews_summary());
title.setText(lists.get(i).getNews_title());
return view;
}
}
class MAsyncTaskImage extends AsyncTask<String, Void, Bitmap> {
ImageView iv;
public MAsyncTaskImage(ImageView imageView) {
this.iv = imageView;
}
//这个是请求网络之前的调用的方法,也是最先调用的方法,可以初始化一些ui等;这个方法是在主线程里运行的
@Override
protected void onPreExecute() {
super.onPreExecute();
}
/**
* String... strings--->这个是可变参数;
* 这个方法是在后台执行的,不能更新ui,是子线程
* 这个方法的返回值会返回给
*/
@Override
protected Bitmap doInBackground(String... strings) {
return new NetWorkUtils().getNetImage(strings[0]);
}
/**
* 这个方法是运行在主线程的
* 当doInBackground执行完, 会自动回调这个方法,来更新ui;
* @param bitmap
*/
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
iv.setImageBitmap(bitmap);
}
//主线程可以更新ui;
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
//写json返回字符串
class MAsyncTaskString extends AsyncTask<String, Void, String> {
//这个是请求网络之前的调用的方法,也是最先调用的方法,可以初始化一些ui等;这个方法是在主线程里运行的
@Override
protected void onPreExecute() {
super.onPreExecute();
}
/**
* String... strings--->这个是可变参数;
* 这个方法是在后台执行的,不能更新ui,是子线程
* 这个方法的返回值会返回给
*/
/**
* 调用urlconnectiong获取json字符串
* @param strings
* @return
*/
@Override
protected String doInBackground(String... strings) {
return new NetWorkUtils().getNetString(strings[0]);
}
/**
* 这个方法是运行在主线程的
* 当doInBackground执行完, 会自动回调这个方法,来更新ui;
*/
@Override
protected void onPostExecute(String netString) {
super.onPostExecute(netString);
Gson gson = new Gson();
Gsonjiexi student = gson.fromJson(netString, Gsonjiexi.class);
lists = student.getData();
listview.setAdapter(mAdapter);
}
//主线程可以更新ui;
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
}
//json解析 写个类然后把json包弄进来然后按 alt+s 要没那个架包就ctrl+alt+s下面有
//个Plugins之后在搜索里搜个GsonFormat就OK了
//viewpager 适配器
public class MyPagerAdapter extends PagerAdapter {
private Context context;
private int[] pics;
public MyPagerAdapter(Context context, int[] pics) {
this.context = context;
this.pics = pics;
}
@Override
public int getCount() {
return pics.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView=new ImageView(context);
imageView.setBackgroundResource(pics[position]);
container.addView(imageView);
return imageView;
}
}
//获取网络资源的类
public class NetWorkUtils {
private int responseCode;
/**
* 获取图片并返回;
* @param urlString
* @return
*/
public Bitmap getNetImage(String urlString){
try {
//得到URL对象,这个对象可以打开连接
URL url = new URL(urlString);
//打开连接,HttpURLConnection:是URLConnection的子类;子类的方法比较多;都用子类
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
//服务器返回的状态码
int responseCode = urlConnection.getResponseCode();
//请求成功
if (responseCode == 200){
InputStream inputStream = urlConnection.getInputStream();
//BitmapFactory类封装了好多关于图片处理的方法;
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
}else {
Log.e("wzq请求图片","responseCode:"+ responseCode);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 请求json字符串,
* @param urlString url
* @return json字符串
*/
public String getNetString(String urlString){
try {
//得到URL对象,这个对象可以打开连接
URL url = new URL(urlString);
//打开连接,HttpURLConnection:是URLConnection的子类;子类的方法比较多;都用子类
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
//服务器返回的状态码
int responseCode = urlConnection.getResponseCode();
//请求成功
if (responseCode == 200){
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String stringTemp = "";
while ((stringTemp = bufferedReader.readLine()) != null) {
stringBuilder.append(stringTemp);
}
String result = stringBuilder.toString();
Log.e("wzq请求json", "result:" + result);
return result;
}else {
Log.e("wzq","responseCode:"+ responseCode);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}