Android PopupWindow,GridView,BaseAdapter以及图片合成综合案例
来源:互联网 发布:中山大学软件学院课程 编辑:程序博客网 时间:2024/06/05 05:32
先看看最终的实现效果吧:
当点击 显示PopupWindow 按钮时,就会弹出该PopupWindow,具体代码如下:
package com.hpsvse.pop;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuffXfermode;import android.graphics.drawable.BitmapDrawable;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.PopupWindow;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity {PopupWindow popupWindow;RelativeLayout parent;String[] dess = new String[] { "唐诗三百首", "宋词三百首", "元曲三百首", "古诗词分类赏析","小学古诗全文赏析", "三字经" };int[] states = new int[] { R.drawable.ic_install, R.drawable.ic_noinstall };int[] imgs = new int[] { R.drawable.ic0, R.drawable.ic1, R.drawable.ic2,R.drawable.ic3, R.drawable.ic4, R.drawable.ic5 };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);View contentView = getLayoutInflater().inflate(R.layout.paopao, null);GridView gridView = (GridView) contentView.findViewById(R.id.grid);gridView.setAdapter(new GradAdapter());gridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {if (popupWindow.isShowing()) {Toast.makeText(MainActivity.this, "position = " + position,Toast.LENGTH_SHORT).show();popupWindow.dismiss();}}});popupWindow = new PopupWindow(contentView,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);popupWindow.setFocusable(true);// 使点击空白处是自动关闭PopupWindowpopupWindow.setBackgroundDrawable(new BitmapDrawable());// 设置窗口进出的动画效果popupWindow.setAnimationStyle(<strong><span style="BACKGROUND-COLOR: #33cc00">R.style.dialog_anim</span></strong>); // 动画xml文件我的在上一篇博文中,你也可以自定义parent = (RelativeLayout) findViewById(R.id.main);}public void click(View view) {popupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);}class GradAdapter extends BaseAdapter {Paint paint;Canvas canvas;public GradAdapter() {paint = new Paint();// 画笔paint.setColor(Color.BLACK);// 图片的合成模式paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_OVER));canvas = new Canvas();// 画布}@Overridepublic int getCount() {return imgs.length;}@Overridepublic Object getItem(int position) {return imgs[position];}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Holder holder;if (convertView == null) {holder = new Holder();convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);holder.img = (ImageView) convertView.findViewById(R.id.img);holder.desc = (TextView) convertView.findViewById(R.id.des);convertView.setTag(holder);} else {holder = (Holder) convertView.getTag();}holder.img.setImageBitmap(getBitmap(position));holder.desc.setText(dess[position]);return convertView;}class Holder {public ImageView img;public TextView desc;}/** * 合成图片 * * @param position * @return */private Bitmap getBitmap(int position) {// 将图片资源转换成为BitmapBitmap bitmap = BitmapFactory.decodeResource(getResources(),imgs[position]);// 创建一张可以可以画的bitmapBitmap alertBitmap = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), bitmap.getConfig());canvas.setBitmap(alertBitmap);canvas.drawBitmap(bitmap, new Matrix(), paint);// 将bitmap画上去Bitmap stateBitmap = null;if (position == 0) {stateBitmap = BitmapFactory.decodeResource(getResources(),states[0]);} else {stateBitmap = BitmapFactory.decodeResource(getResources(),states[1]);}Matrix matrix = new Matrix();matrix.setTranslate(68, 68);// 将图片平移canvas.drawBitmap(stateBitmap, matrix, paint);return alertBitmap;}}}
0 0
- Android PopupWindow,GridView,BaseAdapter以及图片合成综合案例
- Android 选择图片,加载图片,显示图片 综合案例
- android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)
- Android-PopupWindow弹出GridView
- GridView && ArrayAdapter && SimpleAdapter && BaseAdapter【Android】
- Android 截屏以及截屏合成图片
- Android PopupWindow GridView onItemClick无效
- Android图片合成
- Android图片的合成
- Android图片合成
- android 图片合成
- android 图片合成
- android图片合成
- android 图片合成
- Android bitmap合成图片
- android popupwindow 动画 特效 案例
- BaseAdapter&GridView
- Android GridView宫格视图 之 BaseAdapter
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- python 进阶学习之8
- office文档在线预览 (doc、docx、ppt、pptx、xls、xlsx)
- 01背包(体积为负,改变区间) 之 poj 2184
- json
- Android PopupWindow,GridView,BaseAdapter以及图片合成综合案例
- java实现各种算法
- HDU 1251-统计难题
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面
- Android 小功能 -- JSON的三种解析方式
- Hadoop集群(第1期)_CentOS安装配置
- Mac OS X代码量统计程序(Python版)
- 从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM
- SQLite实现不同数据库的表内容复制--从一个数据库把表和内容复制到另一个数据库