欢迎动画页面
package com.bwei.com.lianxi.view;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.
SuppressLint;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import com.bwei.com.lianxi.R;
public class WelcomeActivity
extends AppCompatActivity {
private ImageView
img;
private ImageView
img2;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(
savedInstanceState); setContentView(R.layout.
activity_welcome);
img = findViewById(R.id.
img_welcome);
img2 = findViewById(R.id.
img2_welcome);
img2.setVisibility(View.
INVISIBLE);
final ObjectAnimator animator = ObjectAnimator.
ofFloat(
img,
"rotationY",
0,
90); animator.setDuration(
1500); animator.start();
//
动画结束时会回调这个方法
animator.addListener(
new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
img.setVisibility(View.
INVISIBLE);
img2.setVisibility(View.
VISIBLE);
final ObjectAnimator animator = ObjectAnimator.
ofFloat(
img2,
"rotationY",
270,
360); animator.setDuration(
1500); animator.start(); animator.addListener(
new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation); Intent intent =
new Intent(WelcomeActivity.
this,LoginActivity.
class); startActivity(intent); } }); } }); }}
M层
package com.bwei.com.lianxi.modul;
import com.bwei.com.lianxi.Bean.Bean;
import com.bwei.com.lianxi.pretenter.DataPrepter;
import com.bwei.com.lianxi.utils.OkhtttpUtils;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* Created by
李浩钰
on 2018/4/4.
*/
public class MyDataModul
implements DataModul {
@Override
public void getData(String url,
final DataPrepter prepter) { OkhtttpUtils.
doGet(url,
new Callback() {
@Override
public void onFailure(Call call, IOException e) { }
@Override
public void onResponse(Call call, Response response)
throws IOException { String json = response.body().string(); Gson gson =
new Gson(); Bean bean = gson.fromJson(json, Bean.
class); List<Bean.NewslistBean> list = bean.getNewslist();
//
回调给
P
层
prepter.sueccess(list); } }); }}
p层
package com.bwei.com.lianxi.pretenter; import com.bwei.com.lianxi.Bean.Bean; import com.bwei.com.lianxi.modul.MyDataModul; import com.bwei.com.lianxi.view.DataView; import java.util.List; /** * Created by 李浩钰 on 2018/4/4. */ public class MyDataPrepter implements DataPrepter { DataView dataView; private final MyDataModul myDataModul; public MyDataPrepter(DataView dataView){ this.dataView = dataView; myDataModul = new MyDataModul(); } @Override public void sueccess(List<Bean.NewslistBean> list) { dataView.toBackHome(list); } @Override public void error() { } public void getDatas(String DataUrl){ myDataModul.getData(DataUrl,this); } }
manavtivity
package com.bwei.com.lianxi.view; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.bwei.com.lianxi.Adapter.MyAdapter; import com.bwei.com.lianxi.Bean.Bean; import com.bwei.com.lianxi.R; import com.bwei.com.lianxi.pretenter.MyDataPrepter; import java.util.List; public class MainActivity extends AppCompatActivity implements DataView{ private RecyclerView recyclerView; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); list = (List<Bean.NewslistBean>) msg.obj; adapter = new MyAdapter(MainActivity.this, list); recyclerView.setAdapter(adapter); adapter.setOnclick(new MyAdapter.OnclickLisenner() { @Override public void onItemClick(int position) { Intent intent = new Intent(MainActivity.this,XiangqingActivity.class); //传对应的url intent.putExtra("url",list.get(position).getUrl()); //走这个 startActivity(intent); finish(); } }); } }; private MyAdapter adapter; private List<Bean.NewslistBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycle); String dataUrl = "http://api.tianapi.com/startup/?key=71e58b5b2f930eaf1f937407acde08fe&num=10"; MyDataPrepter myDataPrepter = new MyDataPrepter(this); myDataPrepter.getDatas(dataUrl); recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)); } @Override public void toBackHome(List<Bean.NewslistBean> list) { Message msg = new Message(); msg.obj = list; handler.sendMessage(msg); } }
登录页面
package com.bwei.com.lianxi.view; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.bwei.com.lianxi.R; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.bean.SHARE_MEDIA; import java.util.Map; public class LoginActivity extends AppCompatActivity { private ImageView img; private TextView tv; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); img = findViewById(R.id.img_login); tv = findViewById(R.id.tv_login); btn = findViewById(R.id.btn_login); img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //做登录的操作 // Intent intent = new Intent(LoginActivity.this,MainActivity.class); // // startActivity(intent); UMAuthListener authListener = new UMAuthListener() { /** * @desc 授权开始的回调 * @param platform 平台名称 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @desc 授权成功的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param data 用户资料返回 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(LoginActivity.this, "成功了", Toast.LENGTH_LONG).show(); Log.e("eeeee", String.valueOf(data)); tv.setText(data.toString()); } /** * @desc 授权失败的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(LoginActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授权取消的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; UMShareAPI mShareAPI = UMShareAPI.get(LoginActivity.this); mShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener); } }); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(LoginActivity.this,MainActivity.class); startActivity(intent); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } }
详情页面
package com.bwei.com.lianxi.view; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.Toast; import com.bwei.com.lianxi.R; import com.umeng.socialize.ShareAction; import com.umeng.socialize.UMShareListener; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.media.UMImage; import com.umeng.socialize.media.UMWeb; public class XiangqingActivity extends AppCompatActivity { private Button fenxiang; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiangqing); Intent intent = getIntent(); final String url = intent.getStringExtra("url"); fenxiang = findViewById(R.id.fenxiang); WebView wb = findViewById(R.id.web); wb.getSettings().setJavaScriptEnabled(true); wb.loadUrl(url); //设置自己的浏览器 wb.setWebViewClient(new WebViewClient() { //覆盖shouldOverrideUrlLoading 方法 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); fenxiang.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { UMWeb umWeb = new UMWeb(url); UMImage umImage = new UMImage(XiangqingActivity.this,R.drawable.ic_launcher_background); umWeb.setTitle("我是分享的页面");//标题 umWeb.setDescription("my description");//描述 new ShareAction(XiangqingActivity.this) .withMedia(umWeb) .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN) .setCallback(shareListener).open(); } }); } private UMShareListener shareListener = new UMShareListener() { /** * @descrption 分享开始的回调 * @param platform 平台类型 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @descrption 分享成功的回调 * @param platform 平台类型 */ @Override public void onResult(SHARE_MEDIA platform) { Toast.makeText(XiangqingActivity.this,"成功了",Toast.LENGTH_LONG).show(); } /** * @descrption 分享失败的回调 * @param platform 平台类型 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(XiangqingActivity.this,"失 败"+t.getMessage(),Toast.LENGTH_LONG).show(); } /** * @descrption 分享取消的回调 * @param platform 平台类型 */ @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(XiangqingActivity.this,"取消 了",Toast.LENGTH_LONG).show(); } }; }
适配器
package com.bwei.com.lianxi.Adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.Adapter; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bwei.com.lianxi.Bean.Bean; import com.bwei.com.lianxi.R; import com.bwei.com.lianxi.view.MainActivity; import java.util.List; /** * Created by 李浩钰 on 2018/4/6. */ public class MyAdapter extends RecyclerView.Adapter { Context context; List<Bean.NewslistBean> list; OnclickLisenner onclickLisenner; public MyAdapter(Context context, List<Bean.NewslistBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.layout_item, null); ViewHolder viewHolder = new ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { final ViewHolder viewHolder = (ViewHolder) holder; viewHolder.tv.setText(list.get(position).getTitle()); String picUrl = list.get(position).getPicUrl(); Glide.with(context).load(picUrl).into(((ViewHolder) holder).img); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int layoutPosition = viewHolder.getLayoutPosition(); onclickLisenner.onItemClick(layoutPosition); } }); } @Override public int getItemCount() { return list.size(); } public void setOnclick(OnclickLisenner onclickLisenner) { this.onclickLisenner = onclickLisenner; } class ViewHolder extends RecyclerView.ViewHolder{ private final ImageView img; private final TextView tv; public ViewHolder(View itemView) { super(itemView); img = itemView.findViewById(R.id.img_item); tv = itemView.findViewById(R.id.tv_item); } } public interface OnclickLisenner{ void onItemClick(int position); } }
配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bwei.com.lianxi"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:name=".application.Application" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".view.WelcomeActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".view.MainActivity" /> <activity android:name=".view.LoginActivity" /> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.umeng.socialize.editorpage.ShareActivity" android:excludeFromRecents="true" android:theme="@android:style/Theme.NoTitleBar" /> <activity android:name=".view.XiangqingActivity" android:label="@string/title_activity_xiangqing" android:theme="@style/AppTheme.NoActionBar"></activity> </application> </manifest>