当前位置:  编程技术>移动开发
本页文章导读:
    ▪格局之getDefaultDisplay        布局之getDefaultDisplay ndroid getDefaultDisplay 设置 supports-screens 得到正确的设备大小 android下如果 <manifest 下不写以下的代码 <supports-screens android:smallScreens="true"         android:normalScreens="true.........
    ▪ intent几种传值数组、对象、聚合(Array,Object,List)        intent几种传值数组、对象、集合(Array,Object,List) http://www.cnblogs.com/userbibi/archive/2012/03/29/2423202.html 1.Array ? Intent  intent=new Intent(LinkMap.this,MapList.class);               intent.putExtra("list".........
    ▪ 相关图片处理的一些片段-Xfermode属性       相干图片处理的一些片段-Xfermode属性 http://www./mobile/917390.html1、PorterDuffXfermodePorterDuff.Mode的十六种情况可以看APIDemos中的效果,唯一记录一下,做测试时候迷茫的地方private  void drawIntoBitmap(.........

[1]格局之getDefaultDisplay
    来源: 互联网  发布时间: 2014-02-18
布局之getDefaultDisplay

ndroid getDefaultDisplay 设置 supports-screens 得到正确的设备大小

android下如果

<manifest

下不写以下的代码

<supports-screens

android:smallScreens="true"

        android:normalScreens="true"

        android:largeScreens="true"

        android:anyDensity="true"

    />

那么,如果在稍大的设备上调用WindowManager的getDefaultDisplay()方法可能得不到设备的正确的大小;


    
[2] intent几种传值数组、对象、聚合(Array,Object,List)
    来源: 互联网  发布时间: 2014-02-18
intent几种传值数组、对象、集合(Array,Object,List)

http://www.cnblogs.com/userbibi/archive/2012/03/29/2423202.html

1.Array

private ArrayList<String> checkList=new ArrayList<String>();
 
  Intent intent=new  Intent(mytext.this,show.class);
  intent.putStringArrayListExtra("list", checkList);
  startActivity(intent);

 调用

 

?
Intent intent=this.getIntent();
 ArrayList<String> list=intent.getStringArrayListExtra("list");
 ArrayList<HashMap<String,String>> mylist=new ArrayList<HashMap< String,String>>();
 ///listview使用
 ListView listview=(ListView)findViewById(R.id.MyListView);
 for(int i=0;i<list.size();i++)
 {
  HashMap<String,String> map=new HashMap<String,String>();
  map.put("ItemTitle", list.get(i).toString());
  mylist.add(map);
 }
  
SimpleAdapter mSchedule=new SimpleAdapter(this,mylist,R.layout.show,new String[]{"ItemTitle","ItemTitle"},new int[]{R.id.ItemTitle,R.id.ItemTitle});
listview.setAdapter(mSchedule);

 

2.对象、列表(object,List)

前面都一样,上遍文章已经讲解,这边补充一下,只讲一个Serializable的。。另一个Parcelable都差不多,各自实现各自的接口,调用的时候可以不用那么麻烦,真心不喜欢用Bundle ,挺多此一举的

改写

如果是List

  List<Parking_Info> list=new  ArrayList<Parking_Info>();//搜索结果集合

?
Intent  intent=new Intent(LinkMap.this,MapList.class);
              intent.putExtra("list", (Serializable)list);
startActivity(intent);

这边直接强制转化就行了,再接受的时候用(List<Parking_Info>) getIntent().getSerializable("list")就可以接受到List<Parking_Info>数据了

Listlist=(List)getIntent().getSerializableExtra("list");

调用起来倒也方便的

具体调用,遍历代码

?
@Override
 public void onCreate(Bundle savedInstanceState) {
    
     super.onCreate(savedInstanceState);
     setContentView(R.layout.listmain);
      
  //   List<Parking_Info> list=(List<Parking_Info>)getIntent().getSerializableExtra("list");
     //创建适配器
     SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.maplist,
             new String[]{"name","kongwei","code","addr"},
             new int[]{R.id.name,R.id.kongwei,R.id.code,R.id.addr});
      
     setListAdapter(adapter);
  // ListView listview=(ListView)findViewById(R.id.SearchList);
//   listview.setAdapter(adapter);
 
      
 
     };
      
      
      private List<Map<String, Object>> getData() {      
          List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();      
          
          //获取参数
         List<Parking_Info> mylist=(List<Parking_Info>)getIntent().getSerializableExtra("list");
         
         for(int i=0;i<mylist.size();i++)
         {
              Map<String, Object> map = new HashMap<String, Object>();
             map.put("name",mylist.get(i).getPrk_name());
             map.put("kongwei","空位:"+mylist.get(i).getKongwei());
             map.put("code","收费:"+ mylist.get(i).getCode());
             map.put("addr","地址:"+mylist.get(i).getPrk_addr());
              list.add(map);   
           //   Toast.makeText(this, mylist.get(5).getPrk_name(), Toast.LENGTH_LONG).show();
          
         }
          
          return list;
          }

    
[3] 相关图片处理的一些片段-Xfermode属性
    来源: 互联网  发布时间: 2014-02-18
相干图片处理的一些片段-Xfermode属性
http://www./mobile/917390.html

1、PorterDuffXfermode
PorterDuff.Mode的十六种情况可以看APIDemos中的效果,唯一记录一下,做测试时候迷茫的地方

private  void drawIntoBitmap(Bitmap bm) {
        Canvas canvas = new Canvas(bm);
        Paint paint = new Paint();
        InputStream stream = null;
    try {
    stream = mContext.getAssets().open("icon.jpg");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    Bitmap bitmap = BitmapFactory.decodeStream(stream);
    bitmap = RoundActivity.getRoundCornerBitmap(bitmap);//只是获取一个圆角的图片
    stream = getResources().openRawResource(R.drawable.ic_launcher);
    Bitmap src = BitmapFactory.decodeStream(stream);
   
   
    canvas.drawBitmap(bitmap, 100, 100, paint);
    canvas.drawBitmap(bitmap, 0, 0, paint);
    //SRC_OVER与SRC模式相比,主要区别SRC_OVER是会有透明度影响。而DST的话,则是src区域不显示,不像SRC模式,只是src区域所占的地方,det区对应地方被覆盖
//Over 类型的MODE只有Config为ARGB,以及Alph8类型的位图才会有效果
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OVER));
//只有src占用的区间才会用到Xfermode模式进行运算,而不是整个Canvas区域生效。当然可以指定dst区域.或着如下边注释行的方法,设置了dirst区域。
// canvas.drawBitmap(src,new Rect(0, 0, src.getWidth(), src.getHeight()),new Rect(0, 0, 200 , 200),paint);
canvas.drawBitmap(src, 0, 0,paint);
paint.setARGB(0x80, 0x0, 0xff, 0x0);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
paint.setTextSize(60)
;// paint.setShader(mShader);
paint.setTextAlign(Paint.Align.CENTER);//如果是这个属性,则drawtext中的x,y坐标指的是文字所占区域的中心
Paint.FontMetrics fm = paint.getFontMetrics();
//如果是文字的话,XFermode设置后,只有文字的轨迹占用的地方才会生效
canvas.drawText("text", bm.getWidth()/2, (bm.getWidth()-fm.ascent)/2, paint);

}


如图



2、AvoidXfermode

private void drawInBitmapAvoid(Bitmap bm) {
Canvas canvas = new Canvas(bm);
Paint paint = new Paint();
canvas.drawBitmap(mBitmap, new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight()), new Rect(0, 0, bm.getWidth(), bm.getHeight()), paint);
paint.setARGB(0xff, 0xff, 0x00, 0x00);
//Mode.AVOID 模式下是给op-color不一样的地方才绘制
// 如果tolerance 即误差为0,或者说完全不一样,才会绘制
// 如果tolerance 即误差为255,或者说稍微不一样,就可以绘制
//这边有点拗口,看另外一个模式就明白了
paint.setXfermode(new AvoidXfermode(0xff505050, 0, AvoidXfermode.Mode.AVOID));;
canvas.drawCircle(0, 0, bm.getWidth()/2, paint);
paint.setXfermode(new AvoidXfermode(0xff505050, 255, AvoidXfermode.Mode.AVOID));;
canvas.drawCircle(bm.getWidth(), 0, bm.getWidth()/2, paint);
// 如果是Mode.TARGET模式,只给与op-color一样的像素点上绘制
//如果tolerance为0,即完全一样,才会给这个像素点绘制
//如果tolerance为255,即稍微一样一点,就会给这个像素点绘制
paint.setXfermode(new AvoidXfermode(0xff505050, 0, AvoidXfermode.Mode.TARGET));;
canvas.drawCircle(0, bm.getHeight(), bm.getWidth()/2, paint);
paint.setXfermode(new AvoidXfermode(0xff505050, 255, AvoidXfermode.Mode.TARGET));;
canvas.drawCircle(bm.getWidth(), bm.getHeight(), bm.getWidth()/2, paint);
}


如图



3、PixelXorXfermode


文档中说PixelXorXfermode implements a simple pixel xor (op ^ src ^ dst).  我自认为模块一和模块二效果会一样,但是实验结果不同。

这个类,我完全被他打败了。测试了一下午也没测出规律和原因来,如果有懂的,望不吝赐教
而且经常不同的是R值和B值互换,有时候又正常。真不知道哪里错了

        private void drawInBitmapPixel(Bitmap bm) {
Canvas canvas = new Canvas(bm);
Paint paint = new Paint();
int dst = 0xff00ffff;
paint.setColor(dst);
Rect rect = new Rect(0, 0, bm.getWidth(), bm.getHeight()/2-8);
canvas.drawRect(rect, paint);
int src = 0xffffff00;
int opr = 0xffff0000;

//模块一
paint.setXfermode(new PixelXorXfermode(opr));
paint.setColor(src);
canvas.drawRect(rect, paint);
//模块二
paint.setXfermode(null);
int result = opr^src^dst;
/*//R和B 互换  0x ff ff ff ff
// 取B值
int b = result&0x000000ff;
//取R值
int r = result&0x00ff0000;
//移动到对应位置
b = b<<16;
r = r>>16;
//过滤RB值
result = result&0xff00ff00;
//放入RB值
result |= r;
result |= b;*/
paint.setColor(result);
rect = new Rect(0,bm.getHeight()/2+8,bm.getWidth(),bm.getHeight());
canvas.drawRect(rect, paint);

paint.setXfermode(null);
paint.setTextSize(15);
paint.setTextAlign(Align.CENTER);
canvas.drawText("^color="+Integer.toHexString(paint.getColor()), bm.getWidth()/2, (bm.getHeight()-paint.getFontMetrics().ascent)/2, paint);
}


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
Web服务器/前端 iis7站长之家
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3