当前位置:  编程技术>移动开发
本页文章导读:
    ▪动态作图CheckedTextView        动态绘制CheckedTextView 这几天需要用到一个动态的多选列表框,结果从资源文件中设置是没有问题的。 例1: <CheckedTextView android:id="@+id/checkedTextView1" android:layout_width="fill_parent" andro.........
    ▪ 会判断所使用机器的型号(苹果产品)        能判断所使用机器的型号(苹果产品) - (NSString *) platform{size_t size;sysctlbyname("hw.machine", NULL, &size, NULL, 0);char *machine = malloc(size);sysctlbyname("hw.machine", machine, &size, NULL, 0);NSString *platform = [NSStrin.........
    ▪ 取得外部Apk资源的实体类[转]       获得外部Apk资源的实体类[转] 获取外部Apk资源的实体类: public class ForeignPackage {  public final static String TAG = "ForeignPackage";  private String packageName; private Context foreignCtx;  public ForeignPackage(Context .........

[1]动态作图CheckedTextView
    来源: 互联网  发布时间: 2014-02-18
动态绘制CheckedTextView

这几天需要用到一个动态的多选列表框,结果从资源文件中设置是没有问题的。

例1:

  <CheckedTextView
    android:id="@+id/checkedTextView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:text="@string/loansmanager"
    />
    

 于是我为了动态生成,在java代码中这样设置

CheckedTextView2=new CheckedTextView(this);
CheckedTextView2.setText("test2");
CheckedTextView2.setCheckMarkDrawable(android.R.attr.listChoiceIndicatorMultiple);
myLayout.addView(CheckedTextView2);

 结果报了异常android.content.res.Resources$NotFoundException when programmatically setting android.R.attr.listChoiceIndicatorMultiple·····

理论上这样是没有问题的,可能在绘制时需要先取到id,在绘制吧。google了一下,解决了,关键代码如下

//根据数组id得到数组类型
TypedArray ta = getBaseContext().getTheme().obtainStyledAttributes(attrs);
//初始化绘制目标
Drawable indicator = ta.getDrawable(0);
CheckedTextView1=new CheckedTextView(this);
CheckedTextView1.setText("test1");
//得到绘制目标后放入选择框中
CheckedTextView1.setCheckMarkDrawable(indicator);

 


    
[2] 会判断所使用机器的型号(苹果产品)
    来源: 互联网  发布时间: 2014-02-18
能判断所使用机器的型号(苹果产品)

- (NSString *) platform{

size_t size;

sysctlbyname("hw.machine", NULL, &size, NULL, 0);

char *machine = malloc(size);

sysctlbyname("hw.machine", machine, &size, NULL, 0);

NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];

free(machine);

return platform;

}

-(NSString *) platformString{

NSString *platform = [self platform];

if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";

if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";

if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";

if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";

if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";

if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";

if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";

if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";

if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";

if ([platform isEqualToString:@"i386"])         return @"Simulator";

return platform;

}


    
[3] 取得外部Apk资源的实体类[转]
    来源: 互联网  发布时间: 2014-02-18
获得外部Apk资源的实体类[转]

获取外部Apk资源的实体类:

public class ForeignPackage {
 
 public final static String TAG = "ForeignPackage";
 
 private String packageName;
 private Context foreignCtx;

 public ForeignPackage(Context ctx, String packageName) throws NameNotFoundException{
  this.packageName = packageName;
  foreignCtx = ctx.createPackageContext(packageName, Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
 }
 
 //获取该apk的上下文
 public Context getContext(){
  return foreignCtx;
 }
 
 //获取该apk的asset
 public AssetManager getAssets(){
  return foreignCtx.getAssets();
 }
 
 //获取该apk的Class
 public Class<?> loadClass(String className) throws ClassNotFoundException{
  return foreignCtx.getClassLoader().loadClass(className);
 }
 
 //ID: 形如R.layout.main
 public int getResourceID(String sID){
  int mID = -1;
  if(sID.indexOf('.') == -1 || sID.indexOf('.') == sID.length() - 1){
   return -1;
  }
  
  //String className = "com.apktest.R$attr";
  String className = packageName + "." + sID.substring(0, sID.lastIndexOf('.')).replace('.', '$');
  String idName = sID.substring(sID.lastIndexOf('.') + 1);
  try {
   Class<?> c = loadClass(className);
   Field field = c.getField(idName);
   mID = field.getInt(null);
  } catch (ClassNotFoundException e) {
   Log.e(TAG, "className Not Found:" + className);
   return -1;
  } catch (SecurityException e) {
   Log.e(TAG, "SecurityException:" + sID);
   return -1;
  } catch (NoSuchFieldException e) {
   Log.e(TAG, "The Field Not Found:" + idName);
   return -1;
  } catch (Exception e) {
   Log.e(TAG, "Exception:" + e);
   return -1;
  } 
  
  return mID;
 }
 
 //获取该apk包中的string资源
 public String getString(String id){
  int mID = getResourceID(id);
  if(mID == -1){
   return null;
  }
  
  String s = null;
  try {
   s = foreignCtx.getResources().getString(mID);
  } catch (Exception e) {
   Log.e(TAG, "Exception:" + e);
  }
  
  return s;
 }
 
 //获取该apk包中的color资源
 public int getColor(String id){
  int mID = getResourceID(id);
  if(mID == -1){
   return -1;
  }
  
  int color = -1;
  try {
   color = foreignCtx.getResources().getColor(mID);
  } catch (Exception e) {
   Log.e(TAG, "Exception:" + e);
  }
  
  return color;
 }
 
 //获取该apk包中的drawable资源
 public Drawable getDrawable(String id){
  int mID = getResourceID(id);
  if(mID == -1){
   return null;
  }
  
  Drawable d = null;
  try {
   d = foreignCtx.getResources().getDrawable(mID);
  } catch (Exception e) {
   Log.e(TAG, "Exception:" + e);
  }
  
  return d;
 }
 
 //获取该apk包中的layout资源
 public View getLayout(String id){
  int mID = getResourceID(id);
  if(mID == -1){
   return null;
  }
  
  LayoutInflater inflate  = (LayoutInflater)foreignCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  return inflate.inflate(mID, null);
 }
 
 //获取该apk包中的animation资源
 public Animation getAnimation(String id){
  int mID = getResourceID(id);
  if(mID == -1){
   return null;
  }
  
  Animation a = null;
  try {
   a = AnimationUtils.loadAnimation(foreignCtx, mID);
  } catch (Exception e) {
   Log.e(TAG, "Exception:" + e);
  }
  
  return a;
 }

 //获取该apk包中的类实力,className为类名,args为类的构造函数参数
 public Object getClassInstance(String className, Object...args) throws ClassNotFoundException{
  Class<?> c = loadClass(className);
  try {
   Class<?>[] cs = new Class<?>[args.length];
   int i = 0;
   for(Object arg : args){
    cs[i++] = InstanceMapping.classTypeFormat(arg.getClass());
   }
   Constructor<?> ct = c.getConstructor(cs);
   return ct.newInstance(args);
  } catch (SecurityException e) {
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
  return null;
 }
}


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据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