排行是根据json中解析的数据,进行按照一定的顺序显示,解析的数据以某种颜色作为北京进行显示。
json数据
解析json数据
package com.ldw.market.protocol;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
/*
* 解析排行数据
*/
public class TopProtocol extends BaseProtocol<List<String>> {
@Override
public List<String> parseJson(String json) {
List<String> datas=new ArrayList<String>();
try {
JSONArray array=new JSONArray(json);
for(int i=0;i<array.length();i++){
String str=array.getString(i);
datas.add(str);
}
return datas;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
@Override
public String getKey() {
return "hot";
}
}DrawableUtils.java用于实现圆角矩形和代码实现状态选择器
package com.ldw.market.utils;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
/*
* 实现圆角矩形
*/
public class DrawableUtils {
//创建一个shape资源
public static GradientDrawable createShape(int color){
GradientDrawable drawable=new GradientDrawable();
//设置4个角的弧度
drawable.setCornerRadius(UiUtils.dip2px(5));
// 设置颜色
drawable.setColor(color);
return drawable;
}
//按钮点击的状态选择器
public static StateListDrawable createSelectorDrawable(Drawable pressedDrawable,Drawable normalDrawable){
// <selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="200">
// <item android:state_pressed="true" android:drawable="@drawable/detail_btn_pressed"></item>
// <item android:drawable="@drawable/detail_btn_normal"></item>
// </selector>
//状态列表
StateListDrawable stateListDrawable=new StateListDrawable();
//添加状态
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, pressedDrawable);// 按下显示的图片
stateListDrawable.addState(new int[]{}, normalDrawable);// 抬起显示的图片,什么都不做的时候数组里面可以不写内容
return stateListDrawable;
}
}
TopFragment.java内容的显示,颜色采用随机色的形式设置背景
package com.ldw.market.fragment;
import java.util.List;
import java.util.Random;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import com.ldw.market.R;
import com.ldw.market.protocol.TopProtocol;
import com.ldw.market.utils.DrawableUtils;
import com.ldw.market.utils.UiUtils;
import com.ldw.market.view.LoadingPage.LoadResult;
public class TopFragment extends BaseFragment1 {
private List<String> datas;
@Override
public View createSuccessView() {
ScrollView scrollView=new ScrollView(UiUtils.getContext());
scrollView.setBackgroundResource(R.drawable.grid_item_bg_normal);
LinearLayout layout=new LinearLayout(UiUtils.getContext());
int padding=UiUtils.dip2px(13);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(padding, padding, padding, padding);
//创建一个shape资源,设置默认颜色
int backColor = 0xffcecece;
Drawable pressedDrawable=DrawableUtils.createShape(backColor);// 按下显示的图片
for(int i=0;i<datas.size();i++){
TextView textView=new TextView(UiUtils.getContext());
final String str=datas.get(i);
textView.setText(str);//设置文本
//创建随机数
Random random = new Random();
int red = random.nextInt(200) + 20;//范围在20-220之间,防止黑色或者白色
int green = random.nextInt(200) + 20;
int blue = random.nextInt(200) + 20;
int color =Color.rgb(red, green, blue);
//循环中设置不同的资源
Drawable createShape=DrawableUtils.createShape(color);
//添加状态选择器,设置背景图片
StateListDrawable createSelectorDrawable = DrawableUtils.createSelectorDrawable(pressedDrawable, createShape);// 创建状态选择器
textView.setBackgroundDrawable(createSelectorDrawable);
textView.setTextColor(Color.WHITE);
textView.setTextSize(UiUtils.dip2px(14));//字体大小
int textPaddingV = UiUtils.dip2px(4);
int textPaddingH = UiUtils.dip2px(7);
textView.setPadding(textPaddingH, textPaddingV, textPaddingH, textPaddingV); //设置padding
textView.setClickable(true);//设置textView可以被点击
textView.setOnClickListener(new OnClickListener() { // 设置点击事件
@Override
public void onClick(View v) {
Toast.makeText(UiUtils.getContext(), str, 0).show();
}
});
layout.addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, -2));// -2 包裹内容
}
scrollView.addView(layout);
return scrollView;
}
@Override
protected LoadResult load() {
TopProtocol protocol=new TopProtocol();
datas = protocol.load(0);
return checkData(datas);
}
}
本文介绍了一种基于Java的排行榜数据解析方法,利用JSON数据填充UI组件,并通过随机颜色设置背景来增强视觉效果。此外,还实现了按钮状态选择器以响应用户交互。
2761

被折叠的 条评论
为什么被折叠?



