Android AsyncTask 基本操作ProgressDialog

AsyncTask myTask = new AsyncTask<Void, Void, Void>() {
android.app.ProgressDialog myDialog;

@Override
protected void onPreExecute() {
// final android.app.ProgressDialog
myDialog = android.app.ProgressDialog.show(QueryMainActivity.this,"", “處理中,請稍候….", true);
}
protected Void doInBackground(Void… params){ // URL… urls) {
return null;
}
@Override
protected void onProgressUpdate(Void… values) {
super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(Void args) {
myDialog.dismiss();
}
};
if (android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.HONEYCOMB)
myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
else
myTask.execute();

張貼在 Uncategorized | 發表留言

Android 當想要用 setBackgroundColor時,請以setColorFilter代替

當想要用 .setBackgroundColor時,請以setColorFilter代替

// 當想要用 .setBackgroundColor時,請以setColorFilter代替
.setBackgroundColor(Color.parseColor("#F8CCCC"));

.getBackground().setColorFilter(Color.parseColor("#F8CCCC"), android.graphics.PorterDuff.Mode.MULTIPLY);
張貼在 Uncategorized | 發表留言

Android RecycleView的基本式

參考自:http://givemepass.blogspot.tw/2015/12/recyclerview.html

在MainActivity中的onCreate()加入:

java.util.ArrayList<String> myDataset = new java.util.ArrayList<>();
for(int i = 0; i < 100; i++){
    myDataset.add(Integer.toString(i));
}
SearchRecycleAdapter mAdapter = new SearchRecycleAdapter(myDataset);
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.queryMainSearchView);
LinearLayoutManager layoutManager = new LinearLayoutManager(QueryMainSearchActivity.this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setAdapter(mAdapter);

在MainActivity中加入:

public class SearchRecycleAdapter extends android.support.v7.widget.RecyclerView.Adapter<SearchRecycleAdapter.ViewHolder> {
    private java.util.List<String> mData;
    public SearchRecycleAdapter(java.util.List<String> data) {
        this.mData = data;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.mTextView.setText(mData.get(position));
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(QueryMainSearchActivity.this, "Item " + " is clicked.", Toast.LENGTH_SHORT).show();
            }
        });
        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                Toast.makeText(QueryMainSearchActivity.this, "Item " + " is long clicked.", Toast.LENGTH_SHORT).show();
                return true;
            }
        });
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public class ViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder {
        public TextView mTextView;
        public ViewHolder(View v) {
            super(v);
            mTextView = (TextView) v.findViewById(R.id.info_text);
        }
    }
}
張貼在 Uncategorized | 發表留言

在Android中,解決ExpandableListView加入ScrollView內,導致ExpandableListView無法展開同時也失去捲動功能

在Android中,如果您將ExpandableListView加入ScrollView內,例如下面這樣的Layout

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.test.testscorllapplication.ScrollingActivity"
    tools:showIn="@layout/activity_scrolling">

    <ExpandableListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainListView"
        tools:ignore="ObsoleteLayoutParam" />

</android.support.v4.widget.NestedScrollView>

你可能會發現ExpandableListView縮成一團無法展開,同時也失去捲動功能。

如果您想解決這個問題請在ScrollView中加入 android:fillViewport="true"設定,並在ListView中加入android:nestedScrollingEnabled="true",也就是修改成以下結構:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.test.testscorllapplication.ScrollingActivity"
    tools:showIn="@layout/activity_scrolling">

    <ExpandableListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainListView"
        android:nestedScrollingEnabled="true"
        tools:ignore="ObsoleteLayoutParam" />

</android.support.v4.widget.NestedScrollView>
這樣就解決了 ExpandableListView縮成一團無法展開,同時也失去捲動功能的問題了。
張貼在 Uncategorized | 發表留言

在Android舊版本使用GCM服務,造成超過64K方法

使用GCM服務撰寫 GCM,如果您使用Android5.0以下版本,應該會遇到超過64K 方法。

相關問題討論:

http://blog.darkwing.co/2016/02/%E9%96%8B%E5%95%9Fmultidexenabled%E6%89%80%E9%80%A0%E6%88%90%E7%9A%84crash/

http://stackoverflow.com/questions/39779208/unable-to-get-provider-com-google-firebase-provider-firebaseinitprovider-at-api

解法請見:

https://developer.android.com/studio/build/multidex.html

 

張貼在 Uncategorized | 發表留言

Android CalendarView外部函示庫

最近寫Android App需要CalendarView,但官方的android.widget.CalendarView有點悲劇。

僅有基本的功能,對!就是你想的那樣,只能讓你選個黃道吉日。問題是,我需要的遠不只這樣。

比方,我在展開CalendarView時,必須僅列出可以選的日子,也就是並不是每個日子都能讓使用者選入。其次,不能選的日子當然應該整個 Block住,以免使用者誤觸。

想來想去,當然還是後來還是用了其他外部的Library。

https://github.com/prolificinteractive/material-calendarview

沒錯,就是下載後直接選擇"import Module"這樣就完成了。

不過哩,因為它需要一些gradle變數。因此得另外在原來的gradle.properties加入:

GROUP=com.prolificinteractive
VERSION_NAME=1.4.2
VERSION_CODE=17

POM_PACKAGING=aar
POM_NAME=Material CalendarView
POM_ARTIFACT_ID=material-calendarview
POM_URL=https://github.com/prolificinteractive/material-calendarview
POM_DESCRIPTION=A Material design back port of Android's CalendarView
POM_SCM_URL=https://github.com/prolificinteractive/material-calendarview
POM_SCM_CONNECTION=scm:git@github.com:prolificinteractive/material-calendarview.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:prolificinteractive/material-calendarview.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=prolificinteractive
POM_DEVELOPER_NAME=Prolific Interactive
POM_DEVELOPER_EMAIL=android@prolificinteractive.com
張貼在 Uncategorized | 發表留言

Android 更新/重載 Activity下面的所有fragment的方法

參考:

http://kaihgcode.blogspot.tw/2013/09/viewpager-fragment.html

// 更新全部的fragment的方法!
// PagerAdapter adapter = mViewPager.getAdapter();
mViewPager.setAdapter(mSectionsPagerAdapter);
mSectionsPagerAdapter.notifyDataSetChanged();

 

張貼在 Uncategorized | 發表留言