常用代码片段

1.setText(spannable);1:设置TextView支持部分文字颜色可点击跳转

TextView.setMovementMethod(LinkMovementMethod.getInstance());

2.TextView设置部分字体颜色,加粗,大小

mMineMainMomentsText.setText(Html.fromHtml("<font color='#a0a0a0'><big>" + "说" + "</big></font>" + "<font color='#a0a0a0' ><small>" + "说" + "</small></font>"));

3.SpannableString和ImageSpan的简单介绍

SpannableString可以个推TextView显示不同的颜色和样式
ImageSpan可以实现在文字中间添加图片
其实并没有什么东西。只是知不知道,这个实在实习的时候看到了以前的人写的代码觉得很腻害就百度以一下

Drawable drawable = getResources().getDrawable(id);

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
//需要处理的文本,[smile]是需要被替代的文本
SpannableString spannable = new SpannableString(getText().toString()+"[smile]");
//要让图片替代指定的文字就要用ImageSpan
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
//开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end)
//最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12
spannable.setSpan(span, getText().length(),getText().length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 

4.EditText去除下划线:设置属性background="@null"

5.设置传统GridView每个小条目Item的几分之几,代码中动态设置;

       @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                viewHolder = new ViewHolder();
                convertView = mInflater.inflate(R.layout.group_albums_row_item, parent, false);
//              代码设置GridView中每个item的高度为屏幕宽度的1/4,使其为正方形
                int screenWidth = VLUtils.getScreenWidth(MineEditAlbumsActivity.this);
                convertView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, screenWidth / 4));

                viewHolder.albumsItem = (RoundCornerImageView) convertView.findViewById(R.id.albumsItem);
                convertView.setTag(viewHolder);
            }

6.文件 路径转化为Uri:
          Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"aaa.png")));
7.在使用ListView时,如果使用了getItemViewType, 记得他的值一定要是从0开始计数的。 且要覆盖getViewTypeCount方法。并且让getViewTypeCount>getItemViewType

否则会有数组越界异常:

复制代码
10-21 20:18:16.231: E/AndroidRuntime(4475): java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
10-21 20:18:16.231: E/AndroidRuntime(4475):     at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6437)
10-21 20:18:16.231: E/AndroidRuntime(4475):     at android.widget.ListView.layoutChildren(ListView.java:1559)
10-21 20:18:16.231: E/AndroidRuntime(4475):     at android.widget.AbsListView.onLayout(AbsListView.java:2102)
10-21 20:18:16.231: E/AndroidRuntime(4475):     at se.davison.sodatools.widget.SectionListView.onLayout(SectionListView.java:147)
10-21 20:18:16.231: E/AndroidRuntime(4475):     at android.view.View.layout(View.java:13754)
10-21 20:18:16.231: E/AndroidRuntime(4475):     at android.view.ViewGroup.layout(ViewGroup.java:4362)

8.Fragment  的懒加载 和生命周期相关

一 起因:

我们在做应用的过程中,一个应用的界面可能是多个Fragment切换而成的,但是如果在每次应用启动的时候就去加载大量的网络数据(假设你的每个Fragment都需要加载网络数据,你也可以理解为初始化大量资源)肯定是不好的,能不能有一种方法可以在我们看到我们的Fragment时再去加载对应的Fragment的数据呢?

当然是有的。

二 解决

Fragment虽然有onResume和onPause的,但是这两个方法是Activity的方法,调用时机也是与Activity相同,和ViewPager搭配使用这个方法就很鸡肋了,根本不是你想要的效果,这里介绍一种方法。


  1. @Override  
  2.    public void setUserVisibleHint(boolean isVisibleToUser) {  
  3.        super.setUserVisibleHint(isVisibleToUser);  
  4.        if (isVisibleToUser) {  
  5.            //相当于Fragment的onResume  
  6.        } else {  
  7.            //相当于Fragment的onPause  
  8.        }  
  9.    } 

9.View.post(Runnabel)

Runnable 并不一定是新开一个线程,比如下面的调用方法就是运行在UI主线程中的:

     Handler mHandler=new Handler(); 
     mHandler.post(new Runnable(){ 
        @Override public void run() 
        { // TODO Auto-generated method stub 
         } 
     });

View.post(Runnable)方法。在post(Runnable action)方法里,View获得当前线程(即UI线程)的Handler,然后将action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为action),然后将其投入UI线程的消息循环中。在Handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设,直接调用runnable的run方法。而此时,已经路由到UI线程里,因此,我们可以毫无顾虑的来更新UI。

10.android Typeface使用TTF字体文件设置字体

我们可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。 第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。 第二步,程序中调用: AssetManager mgr=getAssets();//得到AssetManager Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据路径得到Typeface tv.setTypeface(tf);//设置字体

 

 

2.在xml文件中使用android:textStyle=”bold” 可以将英文设置成粗体, 但是不能将中文设置成粗体, 将中文设置成粗体的方法是: TextView tv = (TextView)findViewById(R.id.TextView01); tv.getPaint().setFakeBoldText(true);//中文仿“粗体”--使用TextPaint的仿“粗体”设置setFakeBoldText为true。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值