Android一滴滴筆記(不間斷更新)

Android一滴滴筆記

17.空格编码 string.xml前后加空格的技巧

<string name="space">&#160;&#160;&#160;&#160;我来看空格</string>
&#160; 这个就代表着空格
或者在內容兩頭加""號
<string name="space">”    我来看空格   “</string>

16.Android 判断应用程序是否已安装

PackageInfo packageInfo;

try {
packageInfo = this.getPackageManager().getPackageInfo(
"com.twitter.android", 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if(packageInfo ==null){
System.out.println("没有安装");
}else{
System.out.println("已经安装");
}

 


15.关于timer和线程的使用心得

最紧遇上一个需求,就是需要记录时间相差,并在指定时间内发送push。一开始使用的是线程,在线程里使用SystemClock.sleep做时间加1的操作,和累计之后发送push的判断。逻辑正确,但是时间上的速度加1和现实的时间却不同,原因在于线程sleep了1微秒,但是下面的执行的代码依然占用一定时间。后来改为了timer,指定每100微秒,时间上的确准了,但是因为频繁地使用导致电源消耗严重。最后,通过使用SystemClock.elapsedRealtime()在进入后台和回到app计算相距时间,在前台使用timer刷新



14.Android:lunchmode(Activity的四种启动模式介绍)


(1)standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;
(2)singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;
(3)singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
(4)singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;


13.Monkey壓力測試

啟動:

adb devices
adb shell
monkey -p package -v count  //  -p : packgae  ,  -v count

停止:
adb shell
top | grep monkey

top | grep monkey
5447  0   1% S    10 262960K  10328K     root     com.android.commands.monkey
5447  0   0% S    10 262960K  10324K     root     com.android.commands.monkey
 
找到id为5447,然后再kill掉就OK了
 
adb shell
kill -9 5447


12.Android佈局三個參數

1)fill_parent

 

设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。

 

2) wrap_content

 

设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为 wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置 Windows控件的Autosize属性为True。

 

3)match_parent 

   Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了

 

 

11.Android创建sdcard

Android创建sdcard步骤一、cmd进入tools目录输入mksdcard -l mycard 100M F:\mysdcard.img

 

10.Application的使用

    每個APP都會有一個Application

Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。

    通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。

 

 

9.在Dialog裡顯示NumberPicker

NumberPicker np=new NumberPicker(mActivity);

np.setMaxValue(2050);

np.setMinValue(1900);

np.setValue(2014);

np.setWrapSelectorWheel(false);//設置不能循環

np.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);//設置不能編輯

AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);

builder.setTitle(R.string.tab_calories_height);

builder.setView(np);

builder.setPositiveButton(R.string.tab_calories_yes,

new DialogInterface.OnClickListener() {

 

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

// tv_gender.setText(genders[position]);

}

});

builder.create().show();

 

8.android開發facebookSDK

http://blog.csdn.net/chococlatetan/article/details/40049153

 

7.CalendarView的一個bug

    CalendarView的setOnDateChangeListener事件,似乎在滑動的時候也會觸發,明明裡面的日期是沒有變化卻會同樣觸發。

 

6.startActivityForResult與onActivityResult一些問題

6.1提前執行onActivityResult的原因是在AndroidManifest裡面設置了需要接受傳遞的activity的launchMode模式

    这与 Activity 的加载模式(launchMode)有关,该属性可以在 AndroidManifest.xml 中设置。

原先将其设为 singleInstance,经测试,所有需要传递或接收的 Activity 不允许设置该属性,或只能设为标准模式,否则系统将在 startActivityForResult() 后直接调用 onActivityResult()。

 

6.2调用startActivityForResult后,onActivityResult无响应的问题

    两个activity传递数据和返回数据时,请求方的onActivityResult始终无响应,通过debug调试模式也没见调用该方法。查看了各种配置和程序代码,均未发现有错误之处。后面找了很多资料,总算看到一个朋友说是调用startActivityForResult的参数问题,即调用时这样:

startActivityForResult(intent, 0);

是第二个参数的问题,该参数必须大于0才能在返回值,并激活onActivityResult方法。

我最开始是用的一个activity默认的常量:RESULT_OK,跟踪了代码后发现,该常量的值为-1,当然没法激活 onActivityResult方法了,随后随便修改为一个大于0的整数,程序即通跑成功。

startActivityForResult(intent, 1); //这样就行了

startActivityForResult(Intent intent, Int requestCode);

setResut(int resultCode, Intent intent);

onActivityResult(int requestCode, int resultCode, Intent intent);

 

6.3使用startActivityForResult ERR==WARN/ActivityManager(67): Activity is launching as a new task, so cancelling activity result

    最近使用startActivityForResult,出错,跟踪后发现activity并没有被启动,而是直接执行 onActivityResult。后查看日志发现“05-19 02:11:19.822: .”

原来是我把要启动的activity的launchmode设置成singleTask了。

 

5.為什麼使用Message m = new Message()與 Message message= Message.obtain()

从obtain()的源代码中我们可以知道,它是静态方法,而且只有在spool = null 的情况下才会new出一个Message(),返回一个Message对象,如果在不为空的情况下,Message的对象都是从Message对象池里面拿的实例从而重复使用的,这也为了Android中的Message对象能够更好的回收。

 

4.px2dp & dp2px

public class DensityUtil {  

  

    /** 

     * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 

     */  

    public static int dip2px(Context context, float dpValue) {  

        final float scale = context.getResources().getDisplayMetrics().density;  

        return (int) (dpValue * scale + 0.5f);  

    }  

  

    /** 

     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 

     */  

    public static int px2dip(Context context, float pxValue) {  

        final float scale = context.getResources().getDisplayMetrics().density;  

        return (int) (pxValue / scale + 0.5f);  

    }  

}

 

3.Set android style and theme in app

http://trinea.iteye.com/blog/1450683

 

2.//添加notification和點擊notification回到運動界面

Intent notificationIntent = new Intent(mContext, mContext.getClass()); 

notificationIntent.setAction(Intent.ACTION_MAIN);

notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

 

PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0, notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);

 

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mActivity)

.setTicker(ticker)

.setSmallIcon(R.drawable.ic_launcher)

.setContentTitle(title)

.setContentText(text)

.setContentIntent(contentIntent);

                

NotificationManager mNotificationManager = (NotificationManager) mActivity

.getSystemService(mActivity.NOTIFICATION_SERVICE);

// mId allows you to update the notification later on.

mNotificationManager.cancel(1);

mNotificationManager.notify(1, mBuilder.build());

 

1.webview自動適配屏寬

webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); 

webView.getSettings().setUseWideViewPort(true);

webView.getSettings().setLoadWithOverviewMode(true);

webView.loadUrl(Uri.fromFile(file).toString());

 

Webview詳細設置:

http://www.cnblogs.com/cc-Cheng/archive/2012/10/26/2740875.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
以下是一个简单的 Android 笔记应用的代码示例: 1. 首先,在 AndroidManifest.xml 文件中添以下权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` 2. 在 activity_main.xml 中添一个 EditText 元素和两个 Button 元素,以便用户输入笔记并保存或载笔记: ```xml <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter note here"/> <Button android:id="@+id/saveButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save"/> <Button android:id="@+id/loadButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Load"/> ``` 3. 在 MainActivity.java 文件中编写以下代码: ```java import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; public class MainActivity extends AppCompatActivity { EditText editText; Button saveButton, loadButton; String fileName = "note.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); saveButton = findViewById(R.id.saveButton); loadButton = findViewById(R.id.loadButton); saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = editText.getText().toString(); try { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + fileName); FileOutputStream fos = new FileOutputStream(file); fos.write(text.getBytes()); fos.close(); Toast.makeText(MainActivity.this, "Note saved to " + fileName, Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } }); loadButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + fileName); FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line); } br.close(); fis.close(); editText.setText(sb.toString()); Toast.makeText(MainActivity.this, "Note loaded from " + fileName, Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } }); } } ``` 4. 运行应用程序并测试保存和载笔记的功能。 注意:这只是一个简单的笔记应用程序示例,未进行任何输入验证或错误处理。在实际应用程序中,您可能需要添更多的代码来确保应用程序的稳定性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值