界面代码
<SlidingDrawer
android:id="@+id/sliding"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:content="@+id/sliding_content"
android:handle="@+id/sliding_handle"
android:orientation="horizontal" >
<!-- 水平只能从右到左,垂直只能从下到上 -->
<ImageView
android:id="@id/sliding_handle"
android:layout_width="30dp"
android:layout_height="700dp"
/>
<LinearLayout
android:id="@id/sliding_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="这里是内容"
android:textColorHighlight="#0000ff" />
</LinearLayout>
</SlidingDrawer>
img=(ImageView)findViewById(R.id.sliding_handle);
img.setBackgroundResource(R.drawable.pop);
drawer=(SlidingDrawer)findViewById(R.id.sliding);
drawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
@Override
public void onDrawerOpened() {
img.setBackgroundResource(R.drawable.push);
}
});
drawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
@Override
public void onDrawerClosed() {
img.setBackgroundResource(R.drawable.pop);
}
});
多张小图在一张图片里bitmap切图工具类
package com.kane.switcherresolverslidingrating.util;
import com.kane.switcherresolverslidingrating.R;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class ImageUtil {
private static Bitmap uiMain;
public static Bitmap getTopbar() {
return topbar;
}
public static void setTopbar(Bitmap topbar) {
ImageUtil.topbar = topbar;
}
public static Bitmap getCanSelect() {
return canSelect;
}
public static void setCanSelect(Bitmap canSelect) {
ImageUtil.canSelect = canSelect;
}
public static Bitmap getTopStar() {
return topStar;
}
public static void setTopStar(Bitmap topStar) {
ImageUtil.topStar = topStar;
}
public static Bitmap getAnswer() {
return answer;
}
public static void setAnswer(Bitmap answer) {
ImageUtil.answer = answer;
}
private static Bitmap topbar;
private static Bitmap canSelect;
private static Bitmap topStar;
private static Bitmap answer;
public static void init(Activity a){
//对图片进行初始化的处理
//decodeStream(a.getAssets().open("ui_main.png"))图片存在assets中或sdcard中,还有decodefile某个网络文件
uiMain=BitmapFactory.decodeResource(a.getResources(), R.drawable.ui_main);
//切割出某一部分
topStar=getBitmapPiece(1020, 1939, 108, 108);
topbar=getBitmapPiece(975, 893, 640, 96);
canSelect=getBitmapPiece(975, 338, 74, 76);
answer=getBitmapPiece(1602, 155, 66, 63);
}
private static Bitmap getBitmapPiece(int x,int y,int width,int height){
return Bitmap.createBitmap(uiMain,x,y,width,height);
}
}
自定义gridadapter
package com.kane.switcherresolverslidingrating.adapter;
import java.util.List;
import java.util.Map;
import com.kane.switcherresolverslidingrating.R;
import com.kane.switcherresolverslidingrating.util.Globals;
import com.kane.switcherresolverslidingrating.util.ImageUtil;
import android.R.bool;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.provider.Settings.Global;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.TextView;
/**
* gridview 每个格子的布局
* @author lenovo
*
*/
public class StageAdapter extends BaseAdapter{
private Context ctx;
private List<Map<String,Object>> allValues;
public StageAdapter(Context ctx,List<Map<String, Object>> allValues){
this.ctx=ctx;
this.allValues=allValues;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return allValues.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return allValues.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null) {
convertView=LayoutInflater.from(ctx).inflate(R.layout.grid_stage,null);
convertView.setLayoutParams(new
LayoutParams(LayoutParams.MATCH_PARENT
, Globals.SCREEN_HEIGHT/9));
Map<String,Object> map=allValues.get(position);
TextView stageNumText=(TextView)convertView.findViewById(R.id.stage_text);
stageNumText.setText(map.get("stageNum").toString());
//设置背景颜色,在集合中保存一个关卡是否可以玩的标记
boolean flag=(Boolean)map.get("flag");
if (flag) {
stageNumText.setBackgroundDrawable(new BitmapDrawable(ctx.getResources(),ImageUtil.getCanSelect()));
}
else {
stageNumText.setBackgroundDrawable(new BitmapDrawable(ctx.getResources(),ImageUtil.getAnswer()));
}
}
return convertView;
}
}
单元格界面代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingRight="10dp" android:paddingBottom="10dp" >
<TextView android:id="@+id/stage_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="#999999"
android:textSize="10sp"/>
</LinearLayout>
package com.kane.switcherresolverslidingrating;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.kane.switcherresolverslidingrating.adapter.StageAdapter;
import com.kane.switcherresolverslidingrating.util.ImageUtil;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.view.Menu;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class GridActivity extends Activity {
private GridView gridView;
private LinearLayout topbar;
private TextView topStarText;
private List<Map<String,Object>> allValues=new ArrayList<Map<String,Object>>();
private StageAdapter adapter;
@SuppressWarnings("deprecation")//忽略一些警告信息
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
gridView=(GridView)findViewById(R.id.grid);
topbar = (LinearLayout) findViewById(R.id.top_bar);
topStarText = (TextView) findViewById(R.id.title_text);
topbar.setBackgroundDrawable(new BitmapDrawable(getResources(),ImageUtil.getTopbar()));
topStarText.setBackgroundDrawable(new BitmapDrawable(getResources(),ImageUtil.getTopStar()));
topStarText.setText("10");
//加入数据
for (int i = 0; i <50; i++) {
Map<String, Object> map=new HashMap<String, Object>();
map.put("stageNum", i+1);
if (i<10) {
map.put("flag",true);
}
else {
map.put("flag", false);
}
allValues.add(map);
}
adapter=new StageAdapter(this, allValues);
gridView.setAdapter(adapter);
//加入监听,判断用户所点击的关卡项
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Map<String, Object> map = allValues.get(arg2);
int stageNum = (Integer) map.get("stageNum");
boolean flag = (Boolean) map.get("flag");
if (flag) {
Toast.makeText(GridActivity.this,
"进入了关卡: " + stageNum, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(GridActivity.this,
"该关卡不能玩: " + stageNum, Toast.LENGTH_SHORT).show();
}
}
});
}
}
<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:background="@drawable/background"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
<TextView
android:id="@+id/title_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>
<GridView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"
android:gravity="center"
android:numColumns="6" >
<!-- numColumns="6"可以限定每行六个,这样每个子单云布局的宽度可以是match_parent -->
</GridView>
</LinearLayout>
抽屉组件slidingdrawer;bitmap切图;gridview和listview一样单元布局用AbsListView.LayoutParams;,布布扣,bubuko.com
抽屉组件slidingdrawer;bitmap切图;gridview和listview一样单元布局用AbsListView.LayoutParams;
原文:http://blog.csdn.net/needkane/article/details/22823883