Android源代码日常一

来源:互联网 发布:安卓网络修复大师 编辑:程序博客网 时间:2024/05/17 23:10

  • Android源代码
    • 如何在新建fragment时传入参数
    • fragment注意项
    • 监听返回键
    • 如何获取资源的ID
    • Android如何运行java程序
    • 双击返回键退出
    • PageAdapter
      • 必须实现下述方法以判断view是否来自对象
      • 切换viewPager
    • 如何创建空白imageView
    • onPageScrollStateChanged
    • ViewGroup
    • windowManger
    • popWindow实现
    • Asynctask
    • ScrollView
    • 多点触控统一
    • 生命周期
    • 虚线显示为实线的解决方法
    • 数字过滤器
    • 字符过滤器
    • 设置EditText的默认选中
    • 沉浸式布局
    • ListView
    • 代码控制布局
    • 文件操作
    • webview
    • 在ScollView中嵌套ListView
    • 调用系统应用
    • 登录Activity跳转
    • 获取应用包信息
    • dp和px单位之间的转换
    • TextView显示不同颜色的字体
    • 获取LayoutInflater的三种方法
    • 生成UUID
    • 键值对
    • 自定义toast
    • 相同路径的jar包引用顺序
    • 判断是否联网
    • 在Activity中更新fragment的数据
    • 将activity传入fragment中
    • 延时执行
    • HorizontalScrollView
    • 选择180度的动画实现
    • systemexit
    • 图片显示

Android源代码

如何在新建fragment时传入参数

public static FileViewFragment getInstance(A a){FileViewFragment fileViewFragment = new FileViewFragment();fileViewFragment.a = a;return fileViewFragment;}

fragment注意项

  • 自定义的fragment需要有一个Public的参数为空的构造函数

监听返回键

public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {    onBackPressed();    return true;} else {    return super.onKeyDown(keyCode, event);}}

如何获取资源的ID

int indentify= getResources().getIdentifier
(“icon”, “drawable”, “org.anddev.android.testproject”);
第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名。

Android如何运行java程序

project–>properties->Run Setting->
选择错误类->删除Bootstrap Entries

双击返回键退出

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {    exit();    return true;} else {    return super.onKeyDown(keyCode, event);}}//两秒后isExit=flase;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {    switch (msg.what) {    case 0:        isExit = false;    }}};public void exit() {if (!isExit) {    isExit = true;    Toast.makeText(getApplicationContext(),     R.string.msg_exit_next,Toast.LENGTH_SHORT).show();    mHandler.sendEmptyMessageDelayed(0, 2000);} else {    //完全退出程序    Intent intent = new Intent(Intent.ACTION_MAIN);    intent.addCategory(Intent.CATEGORY_HOME);    startActivity(intent);    // System.exit(0);    finish();}}

PageAdapter

必须实现下述方法以判断view是否来自对象

public boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0==arg1;}

切换viewPager

false无动画,true有动画
viewPager.setCurrentItem(index,false);

如何创建空白imageView

ImageView view1=new ImageView(ctx);

onPageScrollStateChanged

  • SCROLL_STATE_IDLE=0 表示停止在某页
  • SCROLL_STATE_TOUCH_SCROLL = 1 表示开始滑动
  • SCROLL_STATE_FLING = 2 表示手指松开了页面自动滑动

ViewGroup

  • 如果View已经在之前添加到了一个父组件,
    则必须先remove,否则会抛出IllegalStateException。

windowManger

  • 居中的x位置
    WindowManager windowManager = (WindowManager)
    getSystemService(Context.WINDOW_SERVICE);
    int xPos = windowManager.getDefaultDisplay().getWidth() / 2
    - hisRecordPopWin.getWidth() / 2;

popWindow实现

//确定布局View contentView=LayoutInflater.from(DoctorListActivity.this).inflate(R.layout.consult_depart_list,null);//定义布局的长宽mPopWindow=new PopupWindow(contentView,  LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);lv_data_depart=(ListView)contentView.findViewById(R.id.lv_data_depart);lv_data_depart.setAdapter(mAdapter_depart);//popWindow显示位置mPopWindow.showAsDropDown(v);//使PopupWindow能响应按键事件或点击背景Activity以关闭弹出对话框mPopWindow.setBackgroundDrawable(new BitmapDrawable());

Asynctask

***注:常用参数为Void,Void,Void***
  • doInBackground(Params…)

    将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。
    这里将主要负责执行那些很耗时的后台处理工作。可以调用publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。

  • onProgressUpdate(Progress…)

    在publishProgress方法被调用后,UI 线程将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。

  • onPostExecute(Result)
    在doInBackground 执行完成后,onPostExecute 方法将被UI 线程调用,后台的计算结果将通过该方法传递到UI 线程,并且在界面上展示给用户.

ScrollView

  • 滑动方向
    sv_scroll.fullScroll(ScrollView.FOCUS_UP);
  • 嵌套EditView滑动
tv_quick_question_content.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (v.getId()) {case R.id.tv_quick_question_content:v.getParent().requestDisallowInterceptTouchEvent(true);switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_UP:v.getParent().requestDisallowInterceptTouchEvent(false);break;}}return false;}}); 
  • 去掉滚动条
    android: scrollbars=”none”

多点触控统一

event.getAction() & MotionEvent.ACTION_MASK

  • MotionEvent.ACTION_POINTER_UP
  • MotionEvent.ACTION_POINTER_DOWN

生命周期

  • oncreate->onActivityResult->onResume()

虚线显示为实线的解决方法

holder.iv_dash.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

数字过滤器

//只接受整数输入KeyListener l = new DigitsKeyListener(fasle,false);//接受有符号整数输入KeyListener l = new DigitsKeyListener(true,false);//接受小数,整数输入KeyListener l = new DigitsKeyListener(false,true);//接受有符号整数/小数输入KeyListener l = new DigitsKeyListener(true,true);

字符过滤器

et_idNo.setKeyListener(new NumberKeyListener() {@Overridepublic int getInputType() {return InputType.TYPE_CLASS_TEXT;}/*1.InputType.TYPE_CLASS_TEXT2.InputType.TYPE_CLASS_NUMBER3.InputType.TYPE_CLASS_PHONE4.InputType.TYPE_CLASS_DATETIME*///控制输入的字符getAcceptedChars@Overrideprotected char[] getAcceptedChars() {char[] numberChars = { '1', '2', '3', '4', '5', '6', '7', '8','9', '0', 'x', 'X' };return numberChars;}});

设置EditText的默认选中

  • text.setSelection(0, text.getEditableText().length());
  • text.selectAll();

沉浸式布局

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  setTranslucentStatus(true);  SystemBarTintManager tintManager = new SystemBarTintManager(this);  tintManager.setStatusBarTintEnabled(true); //通知栏所需颜色tintManager.setStatusBarTintResource(R.color.top_bar);}  }@TargetApi(19)   private void setTranslucentStatus(boolean on) {  Window win = getWindow();  WindowManager.LayoutParams winParams = win.getAttributes();  final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;  if (on) {  winParams.flags |= bits;  } else {  winParams.flags &= ~bits;  }  win.setAttributes(winParams);  }

布局文件设定

android:clipToPadding=”true”
android:fitsSystemWindows=”true”

ListView

  • setSelected(true)默认互斥
  • setSelection(mVisibleItemCount)设置显示的条目
  • 设置某些项不能点击
  • setEnable(false)
  • 点击空事件
  • 调用适配器时使用addAll

代码控制布局

  • setGravity(Gravity.LEFT|Gravity.RIGHT);
  • 设置ListView隐藏与否也会调用适配器的getView();

文件操作

  • 判断sd是否存在并挂载正确

    if (android.os.Environment.getExternalStorageState()
    .equals(android.os.Environment.MEDIA_MOUNTED))
    return true;

  • 获取sd卡路径(/mnt/sdcard)

    Environment.getExternalStorageDirectory().toString()

  • 获取缓存路径(/cache)

    Environment.getDownloadCacheDirectory().getPath()

  • 新建文件夹

    File file = new File(AppConfig.DB_PATH);
    if (!file.exists()) {
    file.mkdir();
    }

  • 新建文件

//指定文件名和文件路径mCurrentPhotoFile = new File(mPhoto_camera_path,mPhoto_name_temp);if (mCurrentPhotoFile.exists()) {mCurrentPhotoFile.delete();}

webview

//设置图片网页自适应setJavaScriptEnabled(true);  //支持jssetPluginsEnabled(true);  //支持插件 setUseWideViewPort(false);  //将图片调整到适合webview的大小 setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局  setSupportZoom(true);  //支持缩放 setLoadWithOverviewMode(true); // 缩放至屏幕的大小setAllowFileAccess(true);  //设置可以访问文件 //不常用setBuiltInZoomControls(true); //设置支持缩放 setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 setLoadsImagesAutomatically(true);  //支持自动加载图片setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  //关闭webview中缓存 supportMultipleWindows();  //多窗口

在ScollView中嵌套ListView

  • ListView高度调整
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubint expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);/*MeasureSpec表示属性的大小和模式前两位表示模式,后30位表示大小00<-->未指定模式<-->MeasureSpec.UNSPECIFIED01<-->精确模式<-->MeasureSpec.EXACTLY10<-->最大模式<-->MeasureSpec.AT_MOST*/super.onMeasure(widthMeasureSpec, expandSpec);}
  • 顶层获取焦点
    lv_data_1.setFocusable(false);
    lv_data_2.setFocusable(false);

调用系统应用

  • 拨打电话
//直接拨打Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));//跳到拨号界面Intent intent = newIntent(Intent.ACTION_DIAL,Uri.parse("tel:" + phoneNumber));intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  • web浏览器
Uri myBlogUri = Uri.parse("http://www.baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, myBlogUri); 
  • 地图
Uri mapUri = Uri.parse("geo:38.899533,-77.036476"); Intent intent = new Intent(Intent.ACTION_VIEW, mapUri); 
  • 卸载
Uri uninstallUri = Uri.fromParts("package", "packagename", null); returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri); 
  • 安装
Uri installUri = Uri.fromParts("package", "packagename", null); returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri); 
  • 打开文件管理器
Intent intentPick = new Intent(Intent.ACTION_PICK,null);//这个Uri代表要查询的数据库名称加上表的名称intentPick.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");startActivityForResult(intentPick,REQUEST_CODE_IMAGE);/*其他类型music--audio/*movie--video/*pdf--application/**/

登录Activity跳转

1.跳转前activity的name

callbackActivity=this.getClass().getName();

2.跳转时传递

i.putExtra(“target”, callbackActivity);

3.获取跳转前activity

targetAct = Class.forName(target);

获取应用包信息

//获取包名String packageName=this.getPackageName();PackageInfo pi=context.getPackageManager().getPackageInfo(packageName, 0);//获取版本名String versionName = pi.versionName;//获取版本号String versionCode = pi.versionCode;

dp和px单位之间的转换

/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */  public  int dip2px(Context context, float dpValue) {  final float scale = context.getResources().getDisplayMetrics().density;  return (int) (dpValue * scale + 0.5f);  }  /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */  public  int px2dip(Context context, float pxValue) {  final float scale = context.getResources().getDisplayMetrics().density;  return (int) (pxValue / scale + 0.5f);  }   

TextView显示不同颜色的字体

  • 使用html
    String html="<font color=\"#ff0\" size=\"3\">字体一</font>;
    cellView.setText((Html.fromHtml(html)));
  • 使用SpannableString(储存样式和字符串)
SpannableString spanString = new SpannableString("welcome to blog");    ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);    //setSpan (Object what, int start, int end, int flags)spanString.setSpan(span, 1, 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); /*flag取值如下Spannable.SPAN_EXCLUSIVE_EXCLUSIVE  前后都不包括即在指定范围的前面和后面插入新字符都不会应用新样式 Spannable.SPAN_EXCLUSIVE_INCLUSIVE  前面不包括,后面包括Spannable.SPAN_INCLUSIVE_EXCLUSIVE  前面包括,后面不包括Spannable.SPAN_INCLUSIVE_INCLUSIVE  前后都包括*///常用spanmsp = new SpannableString("字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合/bot");   //设置字体(default,default-bold,monospace,serif,sans-serif)  msp.setSpan(new TypefaceSpan("monospace"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  msp.setSpan(new TypefaceSpan("serif"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置字体大小(绝对值,单位:像素)   msp.setSpan(new AbsoluteSizeSpan(20), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第二个参数boolean dip//如果为true,表示前面的字体大小单位为dip,否则为像素,同上。   msp.setSpan(new AbsoluteSizeSpan(20,true), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍  msp.setSpan(new RelativeSizeSpan(0.5f), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  msp.setSpan(new RelativeSizeSpan(2.0f), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置字体前景色  msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 12, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体背景色  msp.setSpan(new BackgroundColorSpan(Color.CYAN), 15, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体样式正常,粗体,斜体,粗斜体  msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //正常  msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 20, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗体  msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //斜体  msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 24, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗斜体  //设置下划线  msp.setSpan(new UnderlineSpan(), 27, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置删除线  msp.setSpan(new StrikethroughSpan(), 30, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置上下标  msp.setSpan(new SubscriptSpan(), 34, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //下标     msp.setSpan(new SuperscriptSpan(), 36, 37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   //上标              //超级链接(需要添加setMovementMethod方法附加响应)  //setMovementMethod(LinkMovementMethod.getInstance());   //电话 msp.setSpan(new URLSpan("tel:4155551212"), 37, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);      //邮件        msp.setSpan(new URLSpan("mailto:xxxxxx@google.com"), 39, 41, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //网络   msp.setSpan(new URLSpan("http://www.baidu.com"), 41, 43, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //短信       msp.setSpan(new URLSpan("sms:4155551212"), 43, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        使用sms:或者smsto:  //彩信 msp.setSpan(new URLSpan("mms:4155551212"), 45, 47, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);       使用mms:或者mmsto:  //地图      msp.setSpan(new URLSpan("geo:38.899533,-77.036476"), 47, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //图片Drawable drawable = getResources().getDrawable(R.drawable.arrow_down);   drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());    spanText8.setSpan(new ImageSpan(drawable), 0, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //自定义字体<style name="style1">  <item name="android:textSize">50sp</item>  <item name="android:textColor">#0ff</item>  <item name="android:textStyle">bold</item>  </style> spanText9.setSpan(new TextAppearanceSpan(getApplicationContext(), R.style.style1), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
  • 使用SpannableStringBuilder(可拼接多个SpannableString)
SpannableStringBuilder spanString = new SpannableStringBuilder();  spanString.append(spanString1);  spanString.append(spanString2);  spanString.append(spanString3); 

获取LayoutInflater的三种方法

  • LayoutInflater inflater = getLayoutInflater();
  • LayoutInflater inflater = LayoutInflater.from(context);
  • LayoutInflater inflater =
    (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)

生成UUID

UUID是由一个十六位的数字组成,表现出来的形式例如 550E8400-E29B-11D4-A716-446655440000   public static String getUUID(){ String s = UUID.randomUUID().toString(); //去掉“-”符号 return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); }

键值对

  • 简单存取
SharedPreferences shareTest=MainActivity.this.getSharedPreferences("shareMy", Context.MODE_PRIVATE);//mode指定为MODE_PRIVATE==0,则该配置文件只能被自己的应用程序访问//mode指定为MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取//mode指定为MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入SharedPreferences.Editor editTest=shareTest.edit();editTest.putString("key","value");editTest.commit();//取值SharedPreferences shareTest=MainActivity.this.getSharedPreferences("shareMy", Context.MODE_PRIVATE);String temp=shareTest.getString("key", "test");//test 为默认的值//清空edit.clear();//删除键值对editor.remove("key");
  • 储存位置
    /data/data/packageName/shared_prefs/shareName.xml
  • 存储格式
<map><string name="-6">144</string><string name="3">144</string><string name="-5">1443333</string><string name="2">1254</string><string name="1">1243</string><string name="-7">144</string></map>
  • 对象存储
/**存储对象*///新建输出字节流,my为存储的对象ByteArrayOutputStream baos = new ByteArrayOutputStream();  try {  // 创建对象输出流,并封装字节流  ObjectOutputStream oos = new ObjectOutputStream(baos);  // 将对象写入字节流  oos.writeObject(my);  // 将字节流编码成base64的字符串String oAuth_Base64 = Base64.encodeToString(baos.toByteArray(),Base64.DEFAULT );editTest.putString(count+"", oAuth_Base64);editTest.commit();}catch(IOException e) {e.printStackTrace();}}/**取对象CRLF 就是Win风格的换行符,意思就是使用CRLF这一对作为一行的结尾而不是Unix风格的LFDEFAULT 这个参数是默认,使用默认的方法来加密NO_PADDING 这个参数是略去加密字符串最后的”=”NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/*/byte[] base64 = Base64.decode(temp.getBytes(), Base64.DEFAULT);  Name myout = null;//封装到字节流  ByteArrayInputStream bais = new ByteArrayInputStream(base64);  try {  //再次封装  ObjectInputStream bis = new ObjectInputStream(bais);  try {  //读取对象  myout = (Name) bis.readObject();  } catch (ClassNotFoundException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  } catch (StreamCorruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } 

自定义toast

public static void showMyToast(Context ctx) {View toastRoot = ((Activity) ctx).getLayoutInflater().inflate(R.layout.toast_my, null);Toast toastStart = new Toast(ctx);toastStart.setGravity(Gravity.CENTER, 0, 0);toastStart.setDuration(Toast.LENGTH_SHORT);toastStart.setView(toastRoot);toastStart.show();}

相同路径的jar包引用顺序

由项目的构建顺序决定

判断是否联网

public class NetUtil {public static Boolean isNetWork(Context context) {ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if(cm != null){    NetworkInfo[] info = cm.getAllNetworkInfo();    for(NetworkInfo n:info){        if(n.getState() == NetworkInfo.State.CONNECTED){            return true;        }    }}return false;}}

在Activity中更新fragment的数据

//public class ActivityPagerAdapter extends FragmentPagerAdapter {public Object instantiateItem(ViewGroup container, int position) {IntroductionFragment f = (IntroductionFragment) super.instantiateItem(container, position);f.setSimpleDesc(doctor.simpleDesc);f.setGoodDisease(doctor.goodDisease);}return f;}@Overridepublic int getItemPosition(Object object) {return FragmentPagerAdapter.POSITION_NONE;}

将activity传入fragment中

1.使用attach

@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);this.ctx=activity;}

2.新建构造方法

public PageFrag(Activity ctx) {this.mActivity = ctx;}

延时执行

new Handler().postDelayed(new Runnable() {@Overridepublic void run() {    {code}}}, int delaytime);

HorizontalScrollView


  • 滑动(单位px)

hsv_title.smoothScrollTo(x,y);

选择180度的动画实现

mRotateUpAnim = new RotateAnimation(0.0f, -180.0f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);mRotateUpAnim.setDuration(200);//设为true之后,界面会停留在动画播放完时的界面mRotateUpAnim.setFillAfter(true);view.startAnimation(mRotateUpAnim);

system.exit

退出虚拟机

arg meaning 0 normal 1 abnormal

图片显示

public static void loadImage(ImageView imageView,String url,int loadingImage,int emptyImage,int failImage){DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(loadingImage).showImageForEmptyUri(emptyImage).showImageOnFail(failImage).cacheInMemory(true).cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565).build();ImageLoader.getInstance().displayImage(url, imageView, options);}
0 0