Android 开发小经验2

1.textView中的ellipsize

我们都知道当在TextView中设定ellipsize时,显示的结果会是缩略显示,但是比较不好的是

Google默认只会显示倆行,如果自己想多显示的话就必须自定义TextView,为了减少开发

过程中的重复工作,我把最近做的项目中的这部分代码贴出来,如下:

package com.hustunique.Fuubo.View;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class WeiboContentText extends TextView{
	private String mText;

	public WeiboContentText(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	public WeiboContentText(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	@Override
	public CharSequence getText() {
		// TODO Auto-generated method stub
		return mText;
	}

	@Override
	public void setText(CharSequence text, BufferType type) {
		// TODO Auto-generated method stub
		mText = (String) text;
		if (mText.length()>22) {
			StringBuffer subTextBuffer = new StringBuffer(mText.substring(0, 19));
			subTextBuffer.append("...");
			text = subTextBuffer;
		} 
		super.setText(text, type);
	}
}
比较低级,但是感觉还是比较实用

2.设置输入法弹出后的布局问题可以试下以下系列方法:

getWindow().setSoftInputMode(WindowManager.LayoutParams.xxxx);

3. TextView实现多行本文滚动  
  <TextView  
    android:id="@+id/xxx"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:scrollbars="vertical"   <!--垂直滚动条 --> 
    android:singleLine="false"       <!--实现多行 --> 
    android:maxLines="12"            <!--最多不超过12行 --> 
    android:textColor="#ffffff" 
    /> 
   当然我们为了让TextView动起来,还需要用到TextView的setMovementMethod方法设置一个滚动实例,代码如下 
TextView tv = (TextView)findViewById(R.id.tvCWJ);   
tv.setMovementMethod(ScrollingMovementMethod.getInstance()); 

4.EditText中setInputType的妙用

使用该方法我们可以实现诸如隐藏/显示输入内容,隐藏键盘等等


5.Dalvik与JVM

a. dalvik是基于寄存器,而JVM基于栈,前者可以提前优化,编译时间短,指令简单短小,所需资源少等等

b. dalvik运行的是.dex,而JVM是.class

c. dalvik接合了面向对象和linux的进程/线程机理,在有限的内存中可以有多个实例,每个android应用对应一个实例

并且android中的线程和进程是和linux内核中一一对应的,内核是感知的,但是在JVM中一次只能支持一个进程,并且多线程

是虚拟机虚拟出来的,操作系统只看到单线程

d.dalvik为所有的对象维持一个常量池,而jvm是每个对象有自己的常量池


6. android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。

7.GC的一般原因:

过长时间持有占用大内存的对象引用,比如activity和context

bitmap没有recycle

cursor没有关闭

自定义adapter时,没有利用contentview

8.将自己的应用添加到系统分享或是发送到:

在自己的activity中加入以下代码

<intent-filter android:label="自己的label">  
               <action android:name="android.intent.action.SEND" />  
               <action android:name="android.intent.action.SEND_MULTIPLE" />  
               <category android:name="android.intent.category.DEFAULT" />  
               <data android:mimeType="application/*" />  
               <data android:mimeType="audio/*" />  
               <data android:mimeType="image/*" />  
               <data android:mimeType="text/*" />  
               <data android:mimeType="video/*" />  
               <data android:mimeType="multipart/*" />  
           </intent-filter> 

9.在自己程序中设置桌面壁纸

public void setWallpaper(View view) {
        //生成一个设置壁纸的请求
final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
Intent chooser = Intent.createChooser(pickWallpaper,"chooser_wallpaper");
//发送设置壁纸的请求
startActivity(chooser);
}

将以上方法作为一个事件触发函数即可


10.将自己程序的背景设置为手机壁纸

在values文件夹下创建一个styles.xml文件,加入如下代码

<resources>
    <style name="Theme" parent="android:Theme.Wallpaper">
        <!-- windowNoTitle设置为true,去掉标题栏 -->
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

然后在自己的程序中使用以上风格即可,注意自己的程序中不能再设置背景,否则不会出现壁纸


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值