!!!用xUitls的时候首先要把xUtils-3.3.22.jar这个jar包导到项目中,并依赖。
首先要使用这个框架
因为我这里用的是gson解析json字符串的所以还需要这一步
import android.app.Application;
import org.xutils.x;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
}
}
创建一个类,并继承Application ,在onCreate方法中写入x.Ext.init(this);就可以了
MainActivity
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText name,pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name= (EditText) findViewById(R.id.name);
pass= (EditText) findViewById(R.id.pass);
}
public void Click(View view) {
switch (view.getId()) {
case R.id.dl:
String s = name.getText().toString();
//判断集合里面是否存在用户名和密码
if((s.equals("admin"))){
Intent intent=new Intent(this,Main2Activity.class);
startActivity(intent);
//切换Activity的动画
overridePendingTransition(R.anim.alpha,R.anim.alpha);
}
break;
case R.id.cz:
name.setText("");
pass.setText("");//清空EditText
break;
}
}
}
MainActivity里面有一个登陆(没用数据库),和两个按钮,一个登陆(点击之后跳转),一个充值(点击之后自动清空EditText)
activity_main布局
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.example.zhouliu.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入账号"
android:id="@+id/name"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入密码"
android:id="@+id/pass"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:id="@+id/dl"
android:onClick="Click"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="重置"
android:id="@+id/cz"
android:onClick="Click"
/>
</LinearLayout>
Main2Activity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.RadioGroup;
import com.google.gson.Gson;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main2Activity extends AppCompatActivity implements AbsListView.OnScrollListener{
private ListView lv;
private String s="http://app.vmoiver.com/apiv3/post/getPostInCate?cateid=0&p=";
int count=1;
private List<Map<String,String>> list;
boolean flag;
MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
lv= (ListView) findViewById(R.id.lv);
list=new ArrayList<>();
myAdapter= new MyAdapter(list, Main2Activity.this);
lv.setAdapter(myAdapter);
show();
lv.setOnScrollListener(this);
}
private void show() {
RequestParams params=new RequestParams(s+count);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String s) {
Gson gson=new Gson();
User user = gson.fromJson(s, User.class);
List<Map<String,String>> list1=new ArrayList<Map<String, String>>();
for (int i=0;i<user.getData().size();i++){
Map<String,String> map=new HashMap<String, String>();
map.put("title",user.getData().get(i).getTitle());
map.put("image",user.getData().get(i).getImage());
list1.add(map);
}
list.addAll(list1);
myAdapter.notifyDataSetChanged();
}
@Override
public void onError(Throwable throwable, boolean b) {
}
@Override
public void onCancelled(CancelledException e) {
}
@Override
public void onFinished() {
}
});
}
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
if(i==SCROLL_STATE_IDLE&&flag){
count++;
show();
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i1, int i2) {
if(i+i1==i2){
flag=true;
}
else {
flag=false;
}
}
}
activity_main2
<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.zhouliu.Main2Activity">
<ListView
android:layout_width="match_parent"
android:id="@+id/lv"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
自定义ListView的布局item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/iv"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:id="@+id/tv"
android:text="我没过"
/>
</LinearLayout>
自定义Listview的适配器
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import org.xutils.image.ImageOptions;
import org.xutils.x;
import java.util.List;
import java.util.Map;
import it.sephiroth.android.library.picasso.Picasso;
/**
* Created by 爸爸 on 2017/11/4.
*/
public class MyAdapter extends BaseAdapter {
private List<Map<String,String>> list;
private Context context;
public MyAdapter(List<Map<String, String>> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Holder holder=null;
if(view==null){
holder=new Holder();
view= View.inflate(context,R.layout.item,null);
holder.iv= (ImageView) view.findViewById(R.id.iv);
holder.tv= (TextView) view.findViewById(R.id.tv);
view.setTag(holder);
}
else {
holder= (Holder) view.getTag();
}
ImageOptions imageOptions=new ImageOptions.Builder().setRadius(500).build();
x.image().bind(holder.iv,list.get(i).get("image"),imageOptions);
holder.tv.setText(list.get(i).get("title"));
return view;
}
class Holder{
TextView tv;
ImageView iv;
}
}
User这里是创建一个类,然后按Alt+s出来一个框把字符串扔上去就行了
XCRoundRectImageView这个是绘图代码
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* Created by 爸爸 on 2017/11/4.
*/
public class XCRoundRectImageView extends ImageView {
private Paint paint;
public XCRoundRectImageView(Context context) {
super(context);
}
public XCRoundRectImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public XCRoundRectImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
paint=new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
Drawable drawable=getDrawable();
if(null!=drawable){
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
Bitmap b=getRoundBitmap(bitmap,20);
final Rect rectSrc=new Rect(0,0,b.getWidth(),b.getHeight());
final Rect rectDest=new Rect(0,0,getWidth(),getHeight());
paint.reset();
canvas.drawBitmap(b,rectSrc,rectDest,paint);
}
else {
super.onDraw(canvas);
}
}
public Bitmap getRoundBitmap(Bitmap bitmap,int roundPx) {
Bitmap output=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight()
, Bitmap.Config.ARGB_8888
);
Canvas canvas=new Canvas(output);
final int color=0xff424242;
final Rect rect=new Rect(0,0,bitmap.getWidth(),bitmap.getHeight());
final RectF rectf=new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0,0,0,0);
paint.setColor(color);
int x=bitmap.getWidth();
canvas.drawRoundRect(rectf,roundPx,roundPx,paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap,rect,rect,paint);
return output;
}
}
对了,我还写了一个Activity切换动画,需要在res里面创建一个anim文件夹在这个文件夹里创建一个xml文件
anim
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1"
android:toAlpha="0.1"
android:duration="3000"
android:fillAfter="true"
>
</alpha>
到这里就结束了,希望能帮到大家